如何避免在SQL Server中存儲datetime
的時間部分,即如果我的值爲2011-01-01 00:00:00.000
我只想存儲2011-01-01
?僅在SQL Server 2005中存儲日期
我想確保只有日期部分存儲。
如何避免在SQL Server中存儲datetime
的時間部分,即如果我的值爲2011-01-01 00:00:00.000
我只想存儲2011-01-01
?僅在SQL Server 2005中存儲日期
我想確保只有日期部分存儲。
DateTime數據類型總是存儲日期和時間。因此,您只需使用CONVERT/CAST來獲取特定格式,或者根據您的需要使用YEAR(),MONTH()或DAY()方法來隔離日期詳細信息。
最簡單的解決方案就是不公開時間部分給用戶。但是,如果確實需要確保僅存儲日期部分,則可以在存儲該值之前將時間部分強制爲午夜/正午/任意一個固定時間。
內置的DATETIME數據類型存儲日期和時間數據。如果你只指定日期部分,那麼時間將是12:00:00或類似的東西。
滑稽的故事:我看到了一個數據庫,一旦那裏有一個日期和時間字段,無論是存儲日期和時間,但每次只使用了一半的數據。有些人做的愚蠢的事情:)
無論是添加計算列:
dateonly AS CONVERT(DATETIME, CONVERT(CHAR(8), date_with_time, 112), 112)
或截斷上插入你的約會權:
INSERT
INTO mytable (dateonly)
VALUES CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)
,使得CHECK
您dateonly列,以提高一個錯誤,當有人試圖插入非截斷值:
CHECK (dateonly = CONVERT(DATETIME, CONVERT(CHAR(8), date_with_time, 112), 112))
只是表示日期爲yyyMMdd
整數值。
或者你可以忽略列的時間部分,並讓它默認。只要確保只在插入/更新值時才提供日期。 – 2009-08-24 17:45:34