sql server按指定日期查询订单

时间:2012-06-14 22:12:35

标签: sql sql-server

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日的记录等等......

1 个答案:

答案 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);

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