Вопрос:
У меня есть таблица, содержащая один столбец 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) Ответ №1
В MySQL
where datetime_column > curdate() — interval (dayofmonth(curdate()) — 1) day — interval 6 month
В SQL Server
where datetime_column > dateadd(m, -6, getdate() — datepart(d, getdate()) + 1)
Ответ №2
Попробуйте этот
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
Ответ №3
…. где yourdate_column> DATE_SUB (сейчас(), ИНТЕРВАЛ 6 МЕСЯЦЕВ)
Ответ №4select * from tbl1 where datetime_column >= DATEADD(m, -6, convert(date, convert(varchar(6), getdate(),112) + ’01’))