2013-11-27 18 views
-1

我遇到數據庫問題。我使用的是SQL Server 2008的數據庫中的表確實有一列來存儲時間,但因爲它依賴於客戶端計算機上的Windows配置,我有一個看起來像這些SQL可以處理AM,但沒有a.m

id|date  |time 
1 | 1/1/2013| 3:05:43 PM 
2 | 1/1/2013| 3:06:33 PM 
3 | 1/1/2013| 4:05:54 PM 
4 | 1/1/2013| 7:04:41 PM 
5 | 1/1/2013| 3:25:43 p.m. 
6 | 1/1/2013| 3:16:33 p.m. 
7 | 1/1/2013| 4:55:54 p.m. 
8 | 1/1/2013| 7:04:41 p.m. 

我記錄「M使用此

convert(varchar, cast([time] as datetime),108) 

我測試了查詢,它只與PM結束記錄的作品,但在查詢時,包括與下午結束記錄的錯誤結果

由於它已經實現了軟件,所以比使用完整的日期時間數據類型存儲日期和時間更容易處理它存儲在數據庫中的方式。

+2

爲什麼DateTime字段不存儲,並根據configurati只*目前*用戶在客戶端計算機上?替代方法如何更容易?爲每種可能的配置實施更多的黑客和變通辦法更容易嗎? –

+0

我不能修改數據庫,並且歷史數據已經處理日期時間這種不正確的方式,這就是爲什麼我試圖使用轉換到存儲的記錄。謝謝。 –

回答

4

在一個理想的世界裏,你可以改變它們存儲的使用恰當的DATETIME的方式,但因爲這是不是一種選擇,你可以在裏面添加REPLACE()

SELECT CAST(REPLACE([time],'.','') AS TIME) 
FROM Table1 

演示:SQL Fiddle

如果需要的CONVERT()

SELECT CONVERT(VARCHAR(8),CAST(REPLACE([time],'.','') AS TIME),108) 
FROM Table1 
+0

真棒! 爲了防止有人提出相同的問題,數據類型時間在sql server 2008中不存在,datetime是應該使用的那個。 CONVERT(VARCHAR(8),CAST(REPLACE([time],'。','')AS DATETIME),108) 謝謝。 –

+0

@PhraTankian檢查答案,將其標記爲回答,如果它工作 – Plutonix

+0

我認爲TIME是在2008年添加的。http://technet.microsoft.com/en-us/library/bb677243(v=sql.100)。 aspx –

相關問題