-1
SELECT Id,Date,Name 
FROM people 
WHERE DATEPART(hh,Date) >= 7 
AND DATEPART(hh,Date) <= 8 
Order by DATEPART(ww,Date);

我的数据库是 SQL Server,问题是“日期”存储为字符串类型。如果我执行该查询,它不会正确排序。

我想要做的是,获取每天早上 7 点到 8 点之间的价值。例如,我想获取 6 月 14 日上午 7 点到 8 点之间的记录,6 月 15 日的记录相同,依此类推....

4

1 回答 1

2

首先,您(我们)都应该知道它是如何存储在数据库中的。将“varchar 日期”解析为日期时间。

假设我们有像 mm/dd/yyyy 这样存储的 Date varchar 所以你应该使用SELECT convert(datetime, THEDATECOLUMN, 101) -- mm/dd/yyyy

您可以在此处查看更多类型的将 varchar 转换为日期时间

好的,在理解您必须首先将 varchar 转换为日期时间并且在此示例中使用mm/dd/yyyy我们应该这样编写查询时。

SELECT Id,Date,Name 
FROM people 
WHERE DATEPART(hh,convert(datetime, DATE, 101) ) >= 7 
AND DATEPART(hh,convert(datetime, DATE, 101) )  <= 8 
Order by convert(datetime, DATE, 101);

根据存储方式,您应该更改相关链接中列出的转换类型

于 2012-06-14T22:20:09.300 回答