MySQL selecciona el primer día del año y el mes

¿Cómo encontrar el primer día del año en SELECT?

SELECT `DATE`,`SomeValue1`,`SomeValue2` FROM `SomeTableName` WHERE (`DATE` >= [...first day of the year in date format...]) 

Encontré esto por mes, pero no TENGO suficiente conocimiento suficiente para el año: (Estaba buscando una consulta separada para encontrar datos entre el comienzo del mes y ahora)

 WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() ) 

Creo que necesitas:

 WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW() ) 

Para ser honesto, podrías hacer:

 WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y') AND NOW() ) 

Para get el primer día del año actual, uso:

 SELECT MAKEDATE(year(now()),1); 

Entonces en su consulta usted escribiría:

 where `date` >= MAKEDATE(year(now()),1) 

Con bastante frecuencia hago algo así como un informe de ventas durante los últimos 2 años completos, pero siempre quiero comenzar a principios de año. Entonces muestra 2 años completos y el año hasta la date.

 where date>= MAKEDATE(year(now()-interval 2 year),1) 

Pero para complicarlo aún más, nuestros ejercicios financieros comienzan el primero de mayo. Siempre quiero comenzar el primero de mayo.

 where date >= MAKEDATE(year(now()-interval 2 year),1) + interval 120 day 

o como una alternativa

 where date >= MAKEDATE(year(now()-interval 2 year),121) 

El primero de mayo es el día 121 de un año. Pero este método no funciona en años bisiestos.

La versión a testing de año bisiesto es:

 where date => select MAKEDATE(year(now()-interval 5 year),1) + interval 4 month 

Que siempre devolverá una date xxxx-05-01, ya sea un año bisiesto o no.

Si lo anterior funciona para el mes, entonces esto funcionará para el año:

 WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-01-01') AND NOW() )