我在日期轉換方面遇到了一些問題,并且嘗試了很多以前的帖子。但是,以前的大多數帖子似乎都在解決將英語日期轉換為其他文化的問題,反之亦然。
這是問題所在:
我有一個“字串”格式的日期,它被傳遞到一個變數中。我想在不更改語言的情況下將其轉換為日期。我想這樣做,以便我可以查看日期之間的記錄。
DECLARE @style INT
DECLARE @recordDate DATE
DECLARE @srchDateBegin NVARCHAR(30)
DECLARE @localeID NVARCHAR(10)
SET @localeID = '1036'
SET @srchDateBegin = '13/04/2022'
SELECT @style = CASE WHEN @localeID = '1036' THEN 103 ELSE 101 END
這是所有宣告的東西(結構有點不同,但我用這種方式寫出來以使其更簡單。下面是我嘗試轉換所有內容但沒有奏效的一種方法:
-SQL SELECT STUFF-
AND (@srchDateBegin = ''
OR @recordDate BETWEEN CONVERT(NVARCHAR(30), CAST(@srchDateBegin AS DATE), @style) AND ...
然后我嘗試在 SQL 中使用 FORMAT 函式,但它不需要 NVARCHAR,但是因為我無法將“16/02/1996”的 NVARCHAR 格式轉換為 DATE,所以我被卡住了
AND (@srchDateBegin = ''
OR @recordDate BETWEEN
CASE WHEN @style = '103' AND '@srchDateBegin' <> '' THEN FORMAT(@srchDateBegin, 'dd/MM/yyyy') ELSE '@srchDateBegin' END AND ...
uj5u.com熱心網友回復:
嘗試這個:
DECLARE @srchDateBegin NVARCHAR(30)
SET @srchDateBegin = '13/04/2022'
SELECT CONVERT(DATE, @srchDateBegin, 105)
uj5u.com熱心網友回復:
根據您所寫的內容,您實際上是將某些內容轉換為NVARCHAR而不是相反。
CONVERT和的語法CAST:
-- CONVERT syntax:
CONVERT(data_type(length), expression, style)
-- CAST syntax:
CAST(expression AS data_type(length))
注意:只有data_type和expression是必需的;length并且style是可選的。
建議:
-- your code:
CONVERT(NVARCHAR(30), CAST(@srchDateBegin AS DATE), @style)
-- suggestion:
CONVERT(date, @srchDateBegin, @style)
資料來源:
- 來自 W3Schools 的快速資訊。
- 比較
CAST和CONVERT來自微軟的檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447525.html
