2013-05-30 49 views
0

我有一個datetime字段。在此字段中,當前日期以此格式手動插入:格式化沒有varchar轉換的日期時間

30/05/2013 0.00.00 

我會自動執行此過程。所以我試圖從GETDATE()函數中檢索當前日期,並用CONVERT()函數解析它,但是這僅適用於使用varchar作爲目標目標,但正如我所說的:我仍然需要datetime。我能做什麼?

+0

你爲什麼要轉換?要插入?或在UI /報告 –

+1

上顯示如果要檢索日期時間,您將檢索日期時間,而不是以前的格式或寬度。 – Serge

回答

3

日期時間都存儲在相同的通用格式。然後,您將根據用戶的區域設置或您自己指定的格式將其退回到您的報告或應用程序並格式化。

日期時間字段和/或對象沒有格式。

如果你想插入當前日期爲時間字段(不包括部分時間),使用以下命令:

insert into [MyTable] ([DateField]) 
values (cast(floor(cast(getdate() as float)) as datetime) 

這將重置時,分,秒爲「0」

如果你想插入日期參數​​,那麼你可以使用下列內容:

cast(floor(cast(@dateParam as float)) as datetime) 

如果你只是想改變它是如何在結果集中格式化的,你可以使用:

SET DATEFORMAT DMY 

在聲明的頂部,然後,無論何時將其轉換爲varchar,都不需要指定格式。

記住,數據庫不應該被格式化日期,你的UI應該處理這個

+0

所以我可以直接插入GETDATE()的輸出,它會顯示爲DD/MM/YYYY h.m.s格式? –

+0

但是你會從數據庫中取出getdate。如果您的語言設置爲「英語(英國)」,則顯示爲dd/MM/yyyy hh:mm.ss,但如果設置爲「英語」,則顯示爲MM/dd/yyyy hh:mm .ss – KaraokeStu

+0

它的工作原理。謝謝! –

0

要存儲當前的日期,而不小時/分鐘,我通常使用這樣的:

CONVERT(DATETIME, CONVERT(CHAR(10), GETDATE(), 102), 102) 
+0

你不應該依賴鑄造日期字符串和格式可以改變,再看看我的解決方案 – KaraokeStu

+0

謝謝!我注意到這個替代解決方案! – tezzo