obtener - last day mysql
¿Cómo obtengo el primer día del mes actual? (11)
Necesito seleccionar datos de la base de datos MySQL entre el primer día del mes actual y el día actual.
select*from table_name
where date between "1st day of current month" and "current day"
¿Alguien puede proporcionar un ejemplo de trabajo de esta consulta?
Estaba buscando una consulta similar donde necesitaba usar el primer día de un mes en mi consulta. La función last_day
no funcionó para mí, pero DAYOFMONTH
me DAYOFMONTH
útil.
Entonces, si alguien está buscando el mismo problema, el siguiente código devuelve la fecha del primer día del mes actual.
SELECT DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY);
Comparando una columna de fecha con el primer día del mes:
select * from table_name where date between
DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY) and CURRENT_DATE
He usado la siguiente consulta. Me ha funcionado muy bien en el pasado.
select date(now()) - interval day(now()) day + interval 1 day
Solución completa para el mes en curso de MySQL y el año en curso, que también hace uso de la indexación :)
-- Current month
SELECT id, timestampfield
FROM table1
WHERE timestampfield >= DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY)
AND timestampfield <= LAST_DAY(CURRENT_DATE);
-- Current year
SELECT id, timestampfield
FROM table1
WHERE timestampfield >= DATE_SUB(CURRENT_DATE, INTERVAL DAYOFYEAR(CURRENT_DATE)-1 DAY)
AND timestampfield <= LAST_DAY(CURRENT_DATE);
Un enfoque menos ortodoxo podría ser
SELECT * FROM table_name
WHERE LEFT(table_name.date, 7) = LEFT(CURDATE(), 7)
AND table_name.date <= CURDATE();
como una fecha entre el primero de un mes y ahora es equivalente a una fecha en este mes, y antes de ahora. Siento que esto es un poco más fácil para los ojos que algunos otros enfoques, sin embargo.
prueba esto :
SET @StartDate = DATE_SUB(DATE(NOW()),INTERVAL (DAY(NOW())-1) DAY);
SET @EndDate = ADDDATE(CURDATE(),1);
select * from table where (date >= @StartDate and date < @EndDate);
SELECT date_sub(current_date(),interval dayofmonth(current_date())-1 day) as first_day_of_month;
SET @date:=''2012-07-11'';
SELECT date_add(date_add(LAST_DAY(@date),interval 1 DAY),
interval -1 MONTH) AS first_day
select * from <table>
where <dateValue> between last_day(curdate() - interval 1 month + interval 1 day)
and curdate();
select * from table
where date between
(date_add (CURRENT_DATE, INTERVAL(1 - DAYOFMonth(CURRENT_DATE)) day)) and current_date;
select * from table_name
where (date between DATE_ADD(LAST_DAY(DATE_SUB(CURDATE(), interval 30 day), interval 1 day) AND CURDATE() )
O mejor :
select * from table_name
where (date between DATE_FORMAT(NOW() ,''%Y-%m-01'') AND NOW() )
select * from table_name
where `date` between curdate() - dayofmonth(curdate()) + 1
and curdate()