SQL Последние 6 месяцев

Вопрос:У меня есть таблица, содержащая один столбец datetime. Мне нужно возвращать строки всего за последние 6 месяцев. Это можно сделать с помощью where datetime_column > DATEADD(m, -6, current_timestamp) Но как продлить этот вариант, если я хочу вернуть последний месяц, начиная с первого дня месяца? Например. Я запускаю это условие в середине месяца (14/6/2000), последняя строка

Вопрос:

У меня есть таблица, содержащая один столбец 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

демоверсия SQLFiddle

В SQL Server

where datetime_column > dateadd(m, -6, getdate() — datepart(d, getdate()) + 1)

демоверсия SQLFiddle

Ответ №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’))

Оцените статью
Добавить комментарий