我有一些以varchar(10)格式存储的日期。
日期如下:
2008-01-06
2008-01-13
2008-01-20
2008-01-27
2008-02-03
2008-02-10
2008-02-17
2008-02-24
我想用dd / mm / yyyy格式(也是DATE数据类型)
我尝试了以下内容:
SELECT CONVERT(VARCHAR(max), startWeek, 103) date
FROM dbo.GoogledataFinal
为什么输出:
2008-01-06
2008-01-13
2008-01-20
2008-01-27
2008-02-03
2008-02-10
2008-02-17
如果你可以修复我的代码会很棒,但我更感兴趣的是为什么这种行为正在发生,所以像我5岁那样的解释可能会有所帮助。
答案 0 :(得分:5)
您正在从varchar
转换为varchar
。 style参数甚至不用于此。
相反,请转换为date
,然后再转回varchar
:
select convert(varchar(10), cast('2008-01-06' as datetime), 103)
打印:
06/01/2008
答案 1 :(得分:2)
SELECT CONVERT(varchar(10), CONVERT(datetime, startWeek), 103) date
FROM dbo.GoogledataFinal
答案 2 :(得分:0)
试试这个:
SELECT (SUBSTRING (startWeek,9, 2) + '/' + SUBSTRING (startWeek,6, 2) + '/' SUBSTRING (startWeek,1, 4)) AS date
FROM dbo.GoogledataFinal
答案 3 :(得分:0)
您需要将varchar转换为日期时间,然后使用所需格式返回varchar:
SELECT CONVERT( varchar(10),
CONVERT(DATETIME, '2008-02-03', 120) -- Varchar "yyyy-mm-dd" to Datetime
, 103) -- Datetime to Varchar "dd/mm/yyyy"
对于您的情况,SQL可能是:
SELECT CONVERT( varchar(10),
CONVERT(DATETIME, startWeek, 120)
, 103)
FROM dbo.GoogledataFinal