T-SQL从特定时间之间的多天中选择数据

时间:2012-12-01 12:48:27

标签: sql-server-2008 tsql datetime

在我的表中,我有关于每日温度测量的微小数据。该表看起来像:

DateTime timestamp, Float temperature

我希望不同日期的温度在一定间隔之间,然后只显示温度在早上7点到晚上8点之间。

我知道如何在日期之间获取数据:

SELECT [timestamp],[temperature]
  FROM [meteo_data]
  WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17' 

如何实施时间限制(上午7点 - 晚上8点)?

非常感谢!!

2 个答案:

答案 0 :(得分:4)

如果您在SQL Server 2008 or above,则可以使用TIME datatype

SELECT [timestamp],[temperature]
FROM [meteo_data]  
WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17'
AND CONVERT(TIME,[timestamp]) BETWEEN '19:00:00' AND '20:00:00'

编辑:当使用日期作为字符串时,建议使用ISO (yyyymmdd)日期格式。即。

BETWEEN '20121110' and '20121117' 

答案 1 :(得分:1)

DateTime和TimeStamp值应包含您需要的精度,所以

SELECT [timestamp],[temperature]
FROM [meteo_data]  
WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17'
AND RIGHT([timestamp], 12) BETWEEN '19:00:00.000' AND '20:00.00.000'

您可能需要根据数据库中的精度调整在RIGHT谓词中评估的字符数。但我们的想法是采用构成小时,分钟,秒和毫秒的所有部分,并将其限制在您需要的时间之间。