SQL Query的date

这可能是一个非常简单的问题。

我在Excel中有一个非常基本的查询,从Sql Server 2008 R2的数据库中提取一些值。

这个数据库中的date字段存储为date时间。 在这个查询中,我对时间部分不感兴趣,所以只想selectdate。 我已经尝试使用Cast或Convert,但是都将sql(yyyy-mm-dd)中的date返回给Excel。 Excel将其识别为文本而不是date,因此一旦数据在Excel中,我无法在表格中执行datefilter。

如果我在Excel中做datepart(),它将它显示为一个date,我可以按预期进行过滤,但是我希望直接来自查询的数据返回为Excel可以过滤的date值。

以下是我的示例查询:

SELECT order_header.oh_id, order_header.oh_order_number, order_header.oh_datetime, convert(date, order_header.oh_datetime, 103) as 'ConvertOrderDate', cast(order_header.oh_datetime as date) as 'CastOrderDate' FROM order_header WHERE order_header.oh_datetime >= '2013-09-01' 

当把这个返回给Excel时,这就是返回的内容:

输出图像http://img834.imageshack.us/img834/4417/7gbg.png

我已经find了答案,没有做任何奇怪的事情:)

 SELECT order_header.oh_id, order_header.oh_order_number, order_header.oh_datetime, DATEADD(dd, DATEDIFF(dd, 0, order_header.oh_datetime), 0) as 'OrderDate' FROM order_header WHERE order_header.oh_datetime >= '2011-09-01' 

这将返回作为date时间,但在00:00,所以我可以简单地在Excel中格式化。