将 French/France 日期格式的 VARCHAR 转换为日期
Convert VARCHAR in French/France Date format to Date
我在日期转换方面遇到了一些问题,并尝试了很多以前的帖子。但是,之前的大多数帖子似乎都解决了将英语日期转换为其他文化的问题,反之亦然。
这是问题所在:
我有一个 'String' 格式的日期,该日期已传递到变量中。我想在不更改语言的情况下将其转换为日期。我想这样做,以便我可以查看日期之间的记录。
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 ...
根据您所写的内容,您实际上是在将某些内容转换为 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)
来源:
- Quick info 来自 W3Schools。
- Comparing
CAST
and CONVERT
来自 Microsoft 的文档。
试试这个:
DECLARE @srchDateBegin NVARCHAR(30)
SET @srchDateBegin = '13/04/2022'
SELECT CONVERT(DATE, @srchDateBegin, 105)
我在日期转换方面遇到了一些问题,并尝试了很多以前的帖子。但是,之前的大多数帖子似乎都解决了将英语日期转换为其他文化的问题,反之亦然。
这是问题所在:
我有一个 'String' 格式的日期,该日期已传递到变量中。我想在不更改语言的情况下将其转换为日期。我想这样做,以便我可以查看日期之间的记录。
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 ...
根据您所写的内容,您实际上是在将某些内容转换为 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)
来源:
- Quick info 来自 W3Schools。
- Comparing
CAST
andCONVERT
来自 Microsoft 的文档。
试试这个:
DECLARE @srchDateBegin NVARCHAR(30)
SET @srchDateBegin = '13/04/2022'
SELECT CONVERT(DATE, @srchDateBegin, 105)