2

在我的表格中,我有关于每日温度测量的详细数据。该表如下所示:

DateTime timestamp, Float temperature

我想在某个时间间隔内显示不同日期的温度,然后只显示早上 7 点到晚上 8 点之间的温度。

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

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

如何也实施时间限制(早上 7 点至晚上 8 点)?

非常感谢!!

4

2 回答 2

5

如果你在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)在使用日期作为字符串时使用日期格式。IE

BETWEEN '20121110' and '20121117' 
于 2012-12-01T13:05:43.617 回答
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 谓词中评估的字符数。但这个想法是采用构成小时、分钟、秒和毫秒的所有部分,并将其限制在您需要的小时之间。

于 2012-12-01T12:59:16.047 回答