如何从30天内选择数据?

时间:2013-05-20 09:02:49

标签: sql sql-server-2008 keyword smalldatetime

我有疑问:

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天中选择数据?

P.S。:日期时间的数据类型为smalldatetime

4 个答案:

答案 0 :(得分:62)

您应该使用DATEADD是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

答案 1 :(得分:20)

试试这个:使用此功能,您可以选择最近30天的日期,

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

答案 2 :(得分:11)

对于那些无法让DATEADD工作的人,请尝试这样做:(现在() - 间隔1个月)

答案 3 :(得分:0)

易于使用的简短版本:

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

DATEADDGETDATE在SQL Server中可用。 MSDN文档:GETDATEDATEADD