在我的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