Как выбрать данные за 30 дней?
У меня есть запрос:
SELECT name
FROM (
SELECT name FROM
Hist_answer
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
UNION ALL
SELECT name FROM
Hist_internet
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
) x
GROUP BY name ORDER BY name
Но DATE_SUB - это функция MySQL, и мне нужна функция для MsSQL 2008
Скажите, пожалуйста, как выбрать данные за 30 дней с помощью MsSQL 2008?
P.S.: Тип данных datetime - smalldatetime
Ответы
Ответ 1
Вы должны использовать DATEADD
- это Sql-сервер, поэтому, если попробовать этот простой выбор, вы увидите влияние
Select DATEADD(Month, -1, getdate())
Результат
2013-04-20 14:08:07.177
в вашем случае попробуйте этот запрос
SELECT name
FROM (
SELECT name FROM
Hist_answer
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE())
UNION ALL
SELECT name FROM
Hist_internet
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE())
) x
GROUP BY name ORDER BY name
Ответ 2
Попробуйте следующее: с помощью этого вы можете выбрать дату за последние 30 дней,
SELECT DATEADD(DAY,-30,GETDATE())
Ответ 3
Для тех, кто не смог заставить DATEADD работать, попробуйте это вместо: (NOW() - INTERVAL 1 MONTH)