SQL Server中如何将'25/10/2022'转换为YYYY-MM-DD格式?
解决SQL Server日期字符串转换为YYYY-MM-DD格式的问题
你的问题出在直接对字符串类型的日期值使用CONVERT函数,此时第三个参数的格式代码不会生效——SQL Server只会原样返回输入的字符串,不会解析日期格式。要实现转换,需要分两步:
- 将字符串转换为日期类型:指定输入格式代码(
103对应dd/mm/yyyy,匹配你的输入25/10/2022) - 将日期类型转换为目标格式的字符串:使用格式代码
23(对应YYYY-MM-DD)
方法一:使用两次CONVERT
SELECT CONVERT(VARCHAR, CONVERT(DATE, '25/10/2022', 103), 23)
方法二:使用TRY_CONVERT避免格式错误报错
如果不确定输入字符串是否都符合dd/mm/yyyy格式,可以用TRY_CONVERT替代,转换失败时返回NULL而非报错:
SELECT TRY_CONVERT(VARCHAR, TRY_CONVERT(DATE, '25/10/2022', 103), 23)
方法三:使用FORMAT函数(写法更直观,性能略低)
SELECT FORMAT(CONVERT(DATE, '25/10/2022', 103), 'yyyy-MM-dd')
补充:格式代码
106对应的是dd mon yyyy(比如25 Oct 2022),这也是你原语句没有得到目标格式的原因之一——即便输入是日期类型,用106也不会输出YYYY-MM-DD。
内容的提问来源于stack exchange,提问作者Sumeet Kumar
相关产品推荐
相关产品推荐

