Sql-Server
如何將 DateTime 連接到 nvarchar 欄位
我有一個帶有 nvarchar(32) 列的表,我想用表上另一個欄位的前 10 個字節更新此列中的值,該欄位在我想連接第一個字節的 10 個字節之後定義為 nvarchar(32)目前日期時間的 22 個字節,日期中沒有破折號。
Update Bil_ReturnsRepository Set PaymentReference = CAST((Left(PolicyNumber, 10) + CONVERT(datetime,GETDATE(), 121)) as nvarchar Where PolicyNumber = '1234567890'
我希望輸出看起來像這樣,例如:
1234567890201802130446386883
沒有標點符號和最多 7 秒小數的日期時間是 21 位數字,因此仍然缺少 1 個字元 (32 - 10 - 21)。
您可以使用以下內容來格式化您想要的方式。
Update Bil_ReturnsRepository Set PaymentReference = CONVERT(NVARCHAR(32), CONCAT( LEFT(PolicyNumber, 10), FORMAT(SYSDATETIME(), 'yyyyMMddHHmmssfffffff0'))) Where PolicyNumber = '1234567890'
如果
PolicyNumber
已經NVARCHAR
存在,則無需進行顯式CONVERT
. 請注意,我硬編碼了最後一個零。
雖然
FORMAT()
可能更易讀,但性能損失很大(在我的測試中約為 2 倍)。如果這是你要做一次的事情,請繼續。如果這是你要重複的事情,特別是當這個表變大時,這應該允許你擴展大約兩倍:UPDATE dbo.Bil_ReturnsRepository SET PaymentReference = LEFT(PolicyNumber, 10) + REPLACE(REPLACE(CONVERT(char(8), sysdatetime(), 112) + CONVERT(char(14), sysdatetime(), 14),':',''),'.','') WHERE PolicyNumber = '1234567890';