Sql-Server

如何從 DATEADD 中刪除 TIME 部分?

  • May 7, 2020

我正在嘗試創建一些測試數據,其中每個員工都有一個隨機的生日。我完成了隨機化部分,但它沒有以我想要的格式返回結果。注意:DateOfBirth 列使用 VARCHAR 數據類型。

/****** Generate Random Date For Each Row (Between 1900 - 2015) ******/
UPDATE CCCINC.dbo.Employees
SET DateOfBirth = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 41975), '1900-01-01');

結果:

Feb 28 1930 12:00AM

如何從結果中刪除 TIME 部分?另外,如果我想將 DATE 格式更改為 YYYYMMDD,我將如何實現呢?

好吧,假設有人拿著槍指著你的頭,迫使你不要將數據類型更改為更明智和合乎邏輯的東西:

UPDATE CCCINC.dbo.Employees
SET DateOfBirth = CONVERT(CHAR(8), DATEADD(DAY, ABS(CHECKSUM(NEWID()) 
 % 41975), '1900-01-01'), 112);

強烈,強烈,強烈建議您更改該列的數據類型以使用正確的數據類型(DATE)。然後,您可以只使用原始查詢,而完全不用擔心“格式”。格式是您在呈現數據時擔心的,而不是在儲存數據時擔心的。

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