将SQL中的日期时间列(当前类型为nvarchar)转换为用户定义的日期时间格式



在我的SQL Server数据库表中,我有一个nvarchar列,其值如'Thursday, 29 - September - 2022, 11:44 pm'。

我想把它转换成'DD/MM/YY'格式:

SELECT FORMAT ('Thursday, 29 - September - 2022, 11:44 pm', 'dd/MM/yy') AS date

,我期待DD/MM/YY格式的结果,但我没有得到正确的输出。

您必须首先使用子字符串提取dd mmm和yyyy,然后您可以附加这些以便能够转换为日期类型106。当你有了date对象后,你可以得到任何想要的格式。

试试以下:

select CONVERT(varchar, CONVERT(DATETIME, 

Substring(str, CHARINDEX(', ', str)+2, 2) + ' ' +  
Substring(
left(str, len(str) - CHARINDEX('-', reverse(str)) - 1), CHARINDEX('-', str) + 2, 
len(left(str, len(str) - CHARINDEX('-', reverse(str)) - 1)) - CHARINDEX('-', str))
+ ' ' +
Substring(str, len(str) - CHARINDEX('-', reverse(str)) + 3, 4)
, 106), 3) 
from (values ('Sun, 25 - May - 2022, 05:00 pm')) v(str)

为demo创建了一个小提琴:https://dbfiddle.uk/apcal_Ca

相关内容

  • 没有找到相关文章

最新更新