3

这也许是一个非常简单的问题。

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

此数据库中的日期字段存储为日期时间。在这个查询中,我对时间部分不感兴趣,所以只想选择日期。我尝试过使用 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 时,将返回以下内容:

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

4

1 回答 1

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 中将其格式化。

于 2013-09-23T15:01:23.393 回答