web-dev-qa-db-ja.com

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の関数が必要です

MsSQL 2008を使用して30日間のデータを選択する方法を教えてください。

追伸:datetimeのデータ型はsmalldatetime

44
Alex N

DATEADD is Sql serverを使用する必要があるため、この単純な選択を試してみると、影響がわかります。

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
62
Raab

これを試してください:これを使用すると、過去30日間の日付を選択できます。

SELECT DATEADD(DAY,-30,GETDATE())
20
Anvesh

DATEADDが機能しない場合は、代わりにこれを試してください:(NOW()-INTERVAL 1 MONTH)

11
maikelsabido

使いやすいショートバージョン:

SELECT * 
FROM [TableName] t
WHERE t.[DateColumnName] >= DATEADD(month, -1, GETDATE())

DATEADDおよびGETDATEは、2008バージョン以降のSQL Serverで使用できます。 MSDNドキュメント: GETDATE および DATEADD

0
walkerbox