2013-09-23 132 views
3

這可能是一個非常簡單的問題。來自SQL查詢的日期

我在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,這是正在返回什麼:

Output Image http://img834.imageshack.us/img834/4417/7gbg.png

+1

你在哪裏轉換/轉換爲'日期'嘗試將其改爲'日期時間' –

+1

我討厭Excel的日期識別:它似乎總是猜錯了。如果我想要文本或數字,它會認爲它是一個日期。如果我想要一個約會,它不會看到它。 –

回答

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中對其進行格式化。

+0

不是所有的文化都能'吃'你的虛度時光。 '20110901'好一點 – alerya