當我使用INSERT INTO table varchar_field Values (GETDATE())
,數據庫存儲的值:如何將GETDATE()存儲在varchar中,但作爲日期時間?
Mar 19 2013 12:55PM
但我想被存儲爲:
2013-03-19 12:55:24.577
這又如何實現呢?
當我使用INSERT INTO table varchar_field Values (GETDATE())
,數據庫存儲的值:如何將GETDATE()存儲在varchar中,但作爲日期時間?
Mar 19 2013 12:55PM
但我想被存儲爲:
2013-03-19 12:55:24.577
這又如何實現呢?
從MSDN:
select CONVERT(varchar(50),getdate(),121)
INSERT INTO table varchar_field Values (CONVERT(varchar(50),getdate(),121))
由於Lamak指出的那樣,我錯誤地離開了指定VARCHAR
謝謝。我在DATETIME上查看了MSDN頁面,看到了對CONVERT的引用,但由於某種原因,沒有考慮傳遞一個參數,而不是時間的例子。 – 2013-03-19 17:37:28
請始終使用帶有長度的'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
你*仍然*遺漏了指定'varchar'的長度... – 2013-03-19 17:48:55
請停止存儲您的日期值作爲varchar
,使用正確的數據類型的長度。
您的最佳解決方案是將您的列更改爲正確的數據類型。
但是,如果你需要的getdate()
轉換,你可以使用:
INSERT INTO table varchar_field
select convert(varchar(50), GETDATE(), 121)
步驟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.`
你爲什麼要儲存一個日期作爲'varchar'?爲什麼不改變列上的數據類型?你的問題將得到解決。 – Taryn 2013-03-19 17:04:45
這是一個將各種參數映射到值的配置表。在這種情況下,我將存儲日期作爲值。 – 2013-03-19 17:38:45
@AlanMarshall希望你沒有存儲'VARBINARY' ...'SELECT CONVERT(varchar(10),0x6869,121)' – swasheck 2013-03-19 17:42:56