Sql-Server
MS SQL - 日期和時間樣式轉換問題
我需要將日期和時間樣式從美國格式轉換為德語,然後將其轉換為
int
數據類型。因此,如果我想在標準 112 (ISO) 中顯示它,那麼對於以下情況下的變數可以正常工作DECLARE @LoopDate datetime SET @LoopDate = '12/23/2015' SELECT @LoopDate AS Original, CAST(CONVERT(VARCHAR(8), @LoopDate, 112) AS int) AS int;
但是當我把 104 假設給我錯誤時:
將 varchar 值“23.10.2015”轉換為數據類型 int 時轉換失敗。
看起來轉換實際上是有效的,但轉換
int
為無效。
104 格式包含
.
在其中,這就是它失敗的原因,而 112 沒有點,因此您可以將其轉換為 int。請參閱https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017DECLARE @LoopDate datetime SET @LoopDate = '12/23/2015' SELECT @LoopDate AS Original, CONVERT(VARCHAR(8), @LoopDate, 104) as GermanDate_WithDot, -- see the dot cast(replace(CONVERT(VARCHAR(8), @LoopDate, 104),'.','') as int) as ProperlyCastedGermanDate_WithoutDot, CAST(CONVERT(VARCHAR(8), @LoopDate, 112) AS int) AS ISOCasted_Date_asInt ;
注意:將 date 轉換為 int 用於以後的一些數學運算並不是一個好主意。