2013-03-19 44 views
-1

當我使用INSERT INTO table varchar_field Values (GETDATE()),數據庫存儲的值:如何將GETDATE()存儲在varchar中,但作爲日期時間?

Mar 19 2013 12:55PM 

但我想被存儲爲:

2013-03-19 12:55:24.577 

這又如何實現呢?

+7

你爲什麼要儲存一個日期作爲'varchar'?爲什麼不改變列上的數據類型?你的問題將得到解決。 – Taryn 2013-03-19 17:04:45

+0

這是一個將各種參數映射到值的配置表。在這種情況下,我將存儲日期作爲值。 – 2013-03-19 17:38:45

+0

@AlanMarshall希望你沒有存儲'VARBINARY' ...'SELECT CONVERT(varchar(10),0x6869,121)' – swasheck 2013-03-19 17:42:56

回答

3

MSDN

select CONVERT(varchar(50),getdate(),121) 

INSERT INTO table varchar_field Values (CONVERT(varchar(50),getdate(),121)) 

由於Lamak指出的那樣,我錯誤地離開了指定VARCHAR

+0

謝謝。我在DATETIME上查看了MSDN頁面,看到了對CONVERT的引用,但由於某種原因,沒有考慮傳遞一個參數,而不是時間的例子。 – 2013-03-19 17:37:28

+4

請始終使用帶有長度的'VARCHAR'(如'VARCHAR(10)'),不要只使用'VARCHAR',否則可能會得到不正確的結果。從@AaronBertrand看到這個http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kclack-declaring-varchar-without-length.aspx – Lamak 2013-03-19 17:42:47

+2

你*仍然*遺漏了指定'varchar'的長度... – 2013-03-19 17:48:55

9

請停止存儲您的日期值作爲varchar,使用正確的數據類型的長度。

您的最佳解決方案是將您的列更改爲正確的數據類型。

但是,如果你需要的getdate()轉換,你可以使用:

INSERT INTO table varchar_field 
select convert(varchar(50), GETDATE(), 121) 

這裏是一個complete list of all data conversions for SQL Server

0

步驟1

alter yourtable drop column varchar_field 

步驟2

alter yourtable add column datetimefield datetime default getdate() 

步驟3

select convert(varchar(50), datetimefield, 121) 
from yourtable 

這種方法允許你改變格式如果需要的話,或做日期math.`

相關問題