T-SQL:如何转换日期的字符串表示

Wal*_*ler 0 sql t-sql

我有一些以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
Run Code Online (Sandbox Code Playgroud)

我想用dd/mm/yyyy格式(也是DATE数据类型)

我尝试过以下方法:

SELECT CONVERT(VARCHAR(max), startWeek, 103) date
FROM dbo.GoogledataFinal
Run Code Online (Sandbox Code Playgroud)

为什么这个输出:

2008-01-06
2008-01-13
2008-01-20
2008-01-27
2008-02-03
2008-02-10
2008-02-17
Run Code Online (Sandbox Code Playgroud)

如果你可以修复我的代码会很棒,但我更感兴趣的是为什么这种行为正在发生,所以像我5岁那样的解释可能会有所帮助.

And*_*mar 5

你正在转变varcharvarchar.style参数甚至不用于此.

相反,转换为date,然后回到varchar:

select convert(varchar(10), cast('2008-01-06' as datetime), 103)
Run Code Online (Sandbox Code Playgroud)

这打印:

06/01/2008
Run Code Online (Sandbox Code Playgroud)