SELECT Id,Date,Name
FROM people
WHERE DATEPART(hh,Date) >= 7
AND DATEPART(hh,Date) <= 8
Order by DATEPART(ww,Date);
我的数据库是SQL Server,事实是“Date”存储为字符串类型。如果我执行该查询,它就没有正确排序。
我想要做的是,每天早上7点到早上8点之间获取价值。例如,我希望在早上7点到早上8点之间获得6月14日的记录,6月15日的记录等等......
答案 0 :(得分:2)
首先,你(我们)应该知道它是如何存储在数据库中的。将“varchar date”解析为日期时间。
假设我们将Date varchar存储为mm / dd / yyyy
所以你应该使用SELECT convert(datetime, THEDATECOLUMN, 101) -- mm/dd/yyyy
您可以查看更多类型的转换varchar到datetime here
好的,理解你必须首先将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);
根据存储方式,您应该更改相关链接中列出的转换类型