2017-02-28 98 views
-1

我在SQL Server中存儲了出生日期的問題。出生日期在SQL Server 2014中存儲爲未來日期

當我轉換爲日期函數時,DOB 04/14/48存儲爲2048-04-14(所需值爲1948-04-14)。根據我閱讀的文章,我將日期的兩位數字從2049的默認值更改爲2030.現在我可以將其保存爲1948-04-14。但06/13/20的出生日期仍保存爲2020-06-13(實際值爲1920-06-13)。

我不知道應該如何設置兩位數截止日期來解決所有這些問題。我正在使用SQL Server 2014.我正在從平面文件加載數據,並且日期始終以平面文件中的mm/dd/yy格式顯示。

+0

什麼是'04/14/16'應該是什麼?爲什麼你不能存儲整年? – Lamak

+0

您只需在插入/更新語句中檢查日期。如果是將來,則從中減去100年。 –

+0

@Lamak我的實際需求是這樣的,如果DOB的年份部分>當年,則從年減去100,否則將其轉換爲yyyy-mm-dd格式。我的數據庫中有很多日期字段,所以我只能將它應用於SQL表中的DOB字段。 – Please

回答

1

如何進行轉換,然後根據需要減去一個世紀?

select (case when convert(date, dob, ??) > getdate() 
      then dateadd(year, -100, convert(date, dob, ??)) 
      else convert(date, dob, ??) 
     end) 

如果您沒有任何百歲老人,您甚至可以在數據中添加此項作爲計算列。

+0

謝謝!我試過這個選項。它工作正常。由於我的SQL表中有很多日期字段,因此我需要單獨添加此代碼。有什麼方法可以在數據庫級別設置,以便我不需要更新所有日期字段? – Please

+0

@請。 。 。你需要更新所有的日期字段。你可以使用一些內置的sps,比如'sp_MSforeachtable'。 –

相關問題