Legacy SQL:
For the anniversary this year of the start date:
#legacySQL
SELECT
DATE_ADD(
Client_StartDate,
YEAR(CURRENT_TIMESTAMP()) - YEAR(Client_StartDate),
"YEAR") AS AnniversaryDate
FROM (SELECT TIMESTAMP('2015-02-23') AS Client_StartDate);
For the number of months since the start date:
#legacySQL
SELECT
(YEAR(CURRENT_TIMESTAMP()) - YEAR(Client_StartDate)) * 12 +
(MONTH(CURRENT_TIMESTAMP()) - MONTH(Client_StartDate)) AS MonthsSinceStart
FROM (SELECT TIMESTAMP('2015-02-23') AS Client_StartDate);
Standard SQL:
For the anniversary this year of the start date (assumed to be a timestamp):
#standardSQL
SELECT
DATE(EXTRACT(YEAR FROM CURRENT_DATE()),
EXTRACT(MONTH FROM Client_StartDate),
EXTRACT(DAY FROM Client_StartDate)) AS AnniversaryDate
FROM (SELECT TIMESTAMP '2015-02-23' AS Client_StartDate);
For the number of months since the start date (assumed to be a timestamp):
#standardSQL
SELECT
DATE_DIFF(
CURRENT_DATE(),
EXTRACT(DATE FROM Client_StartDate), MONTH) AS MonthsSinceStart
FROM (SELECT TIMESTAMP '2015-02-23' AS Client_StartDate);
One thing about the legacy SQL queries is that they operate on TIMESTAMP rather than the DATE type (DATE has limited functionality with legacy SQL). DATE is a nice type to work with in standard SQL because it's a logical point in time rather than a physical one and isn't tied to a timezone. You can read more about it in the data types reference.
#standardSQLcomment at the top of your query with the app? - Elliott Brossard