这可能是一个非常简单的问题。
我在Excel中有一个非常基本的查询,它从Sql Server 2008 R2上的数据库中提取一些值。
此数据库中的日期字段存储为datetime。在此查询中,我对时间部分不感兴趣,因此只想选择日期。我尝试过使用Cast或Convert,但两者都将sql(yyyy-mm-dd)中的日期返回给Excel。 Excel将其识别为文本而不是日期,因此一旦数据在Excel中,我就无法在表格中执行日期过滤。
如果我在Excel中使用datepart(),它会将其显示为日期,我可以按预期过滤,但是我希望直接来自查询的数据作为Excel可以过滤的日期值返回。
以下是我的示例查询:
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时,这就是返回的内容:
Output Image http://img834.imageshack.us/img834/4417/7gbg.png
答案 0 :(得分:1)
我实际上找到了答案而没有做任何奇怪的事情:)
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'
这将作为日期时间返回,但在时间00:00,所以我可以简单地在Excel中格式化。