1

我有以下输出存储在字符串字段中:

询问

SELECT StringField5 FROM MyTable WHERE OrderID=1

输出

2018 年 2 月 13 日

我想使用 SQL 允许转换/转换的一种方式来获得以下输出:

2018 年 13 月 2 日。

我已经尝试了以下代码,并且在这个网站上找到了很多代码,但没有任何帮助并且总是返回描述的第一个输出(02/13/2008):

SELECT CONVERT(varchar(25), StringField5, 103) FROM MyTable WHERE OrderID=1

我正在使用 SQL Server 2016。
我缺少什么?

4

3 回答 3

2

首先将您的字符串日期转换为日期时间,然后将该日期时间转换回您期望的字符串输出:

SELECT CONVERT(varchar(25), CONVERT(datetime, '02/13/2018', 101), 103)
FROM MyTable
WHERE OrderID = 1;

演示

顺便说一句,将日期作为字符串存储在数据库中通常是个坏主意。始终将您的信息存储为正式日期。

于 2018-04-03T09:40:16.870 回答
0

您可以使用此方法将 '02/13/2018' 转换为 '13/02/2018'

Select substring(StringField5,4,2)+'/'+ substring(StringField5,0,3)+'/'+ substring(StringField5,7,4) FROM MyTable WHERE OrderID=1
于 2018-04-04T13:30:09.320 回答
0

你应该使用

SELECT FORMAT(StringField5, 'dd/MM/yyyy', 'en-US' ) FROM MyTable WHERE OrderID=1

格式

于 2018-04-03T09:46:16.697 回答