如何从30天内选择数据?

问题描述 投票:43回答:4

我有疑问:

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

sql sql-server-2008 keyword smalldatetime
4个回答
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

20
投票

试试这个:使用这个你可以选择最近30天的日期,

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

11
投票

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


0
投票

简易版使用方便:

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

DATEADDGETDATE在2008 Server版本的SQL Server中可用。 MSDN文档:GETDATEDATEADD

© www.soinside.com 2019 - 2024. All rights reserved.