Подтвердить что ты не робот

Как выбрать данные за 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

4b9b3361

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