Ответ 1
Для MS SQL Server вы можете использовать:
where datetime_column >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,
current_timestamp)), 0)
У меня есть таблица, содержащая один столбец datetime. Мне нужно возвращать строки всего за последние 6 месяцев. Это можно сделать с помощью
where datetime_column > DATEADD(m, -6, current_timestamp)
Но как продлить этот вариант, если я хочу вернуть последний месяц, начиная с первого дня месяца? Например. Я запускаю это условие в середине месяца (14/6/2000)
, последняя строка имеет значение 14/1/2000
, но я хотел бы вернуть ее как 1/1/2000
. Любые советы?
Я пробовал некоторые подзапросы (максимальная функция datetime, включая функцию месяца), но без успеха.
Для MS SQL Server вы можете использовать:
where datetime_column >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,
current_timestamp)), 0)
where datetime_column > curdate() - interval (dayofmonth(curdate()) - 1) day - interval 6 month
where datetime_column > dateadd(m, -6, getdate() - datepart(d, getdate()) + 1)
Попробуйте этот
where datediff(month, datetime_column, getdate()) <= 6
Эта часть datediff(month, datetime_column, getdate())
получит разницу месяца в числе текущей даты и Datetime_Column и вернет строки типа:
Результат
1
2
3
4
5
6
7
8
9 < бр /" > 10
Это наше окончательное условие для получения данных за последние 6 месяцев.
где результат <= 6
.... где yourdate_column> DATE_SUB (сейчас(), ИНТЕРВАЛ 6 МЕСЯЦЕВ)
select *
from tbl1
where
datetime_column >=
DATEADD(m, -6, convert(date, convert(varchar(6), getdate(),112) + '01'))