将法语/法语日期格式的VARCHAR转换为日期



我在日期转换方面遇到了一些问题,并且尝试了很多以前的帖子。然而,之前的大多数帖子似乎都涉及将英语日期转换为其他文化,反之亦然。

问题是:

我有一个"字符串"格式的日期,它被传递到一个变量中。我想在不改变语言的情况下把它变成一个约会。我想这样做,这样我就可以查看日期之间的记录。

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,但因为我不能将"1996年2月16日"的NVARCHAR格式转换为DATE,所以我被卡住了

AND (@srchDateBegin = ''
OR @recordDate BETWEEN
CASE WHEN @style = '103' AND '@srchDateBegin' <> '' THEN FORMAT(@srchDateBegin, 'dd/MM/yyyy') ELSE '@srchDateBegin' END AND ...

试试这个:

DECLARE @srchDateBegin NVARCHAR(30)
SET @srchDateBegin = '13/04/2022'
SELECT CONVERT(DATE, @srchDateBegin, 105)

根据您所写的内容,您实际上是在将某些内容转换为NVARCHAR,而不是相反。

CONVERTCAST:的语法

-- CONVERT syntax:
CONVERT(data_type(length), expression, style)
-- CAST syntax:
CAST(expression AS data_type(length))

注:只需要data_typeexpression;CCD_ 6和CCD_。

建议:

-- your code:
CONVERT(NVARCHAR(30), CAST(@srchDateBegin AS DATE), @style)
-- suggestion:
CONVERT(date, @srchDateBegin, @style)

来源:

  • W3Schools的快速信息
  • 比较Microsoft文档中的CASTCONVERT

相关内容

  • 没有找到相关文章

最新更新