Sql-Server

我可以為此值“19920000”轉換日期格式嗎?

  • June 16, 2016

我有一個價值19920000。這是日期格式yyyyMMdd。我想在表格中按日期欄位保存。您可能會看到它是無效數據,因為日期和月份值為零。我可以在 SQL Server 中將日期格式轉換為這個值嗎?可不可以?

如何在日期欄位中僅保存年份?

我從excel表中獲取數據。這些數據是客戶的出生日期。有些人想隱藏出生日期和月份。他們沒有給出正確的日期格式。我的應用程序是從 excel 表中讀取數據並顯示在 datagridview 表上,然後保存到數據庫。數據量大,至少一次讀取約30000條以上的記錄。我無法為此數據欄位分隔列,因為性能可能會下降。

我正在使用 SQL Server 2008。

.

date類型不能儲存部分日期,例如僅儲存年份或僅儲存日期和月份。

在一個項目中,我需要儲存不完整的日期,並且我使用了三個單獨的可空列用於day (tinyint),month (tinyint)year (smallint). 我看不出在什麼情況下您需要使用varchar整數類型來代替。

就我而言,這是關於客戶出生日期的資訊,而且銷售人員通常不知道年份,但知道月份或日期。使用這種方法,它非常靈活,允許使用者輸入他擁有的任何資訊。知道日期的某些部分失去也很重要,例如“我們不知道確切的出生日期,但我們知道它是在六月”。

顯然,應用程序中有一堆自定義檢查(不是在數據庫級別)試圖阻止輸入像 6 月 31 日這樣的內容。在該特定項目中,可以在應用程序中執行檢查。很可能也可以在 T-SQL 中實現它們。一般來說,最好在數據庫級別實現約束,因為應用程序來來去去,但數據仍然存在。

在查詢中使用這些不完整的日期也更加困難。不同的查詢/報告需要不同的方法來處理失去的位。

30K 行根本不算多,性能應該不是問題。因此,我將專注於對您的 Excel 數據進行智能解析和驗證,並儲存您可以提取的所有資訊。

我認為您不能將此值添加為date類型。因為date類型是特殊類型,所以你要使用它,所以你必須接受微軟定義的它的規則。您可以使用其他類型varchar來更輕鬆地保存您的價值。

它肯定不能使用錯誤的date類型語法。如果你只想保存年份(只是為了查詢,不需要比較計算,你可以把它保存為varchar類型。如果沒有,你可以將它保存為並添加一個約束,int例如限制輸入數據。trigger``check

引用自:https://dba.stackexchange.com/questions/141253