我有这样的样本数据:
SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/1997', 3), 120);
当我执行此操作时,我得到的错误是这样的:
Msg 241,Level 16,State 1,Line 1
从字符转换日期和/或时间时转换失败 字符串。
然后我删除了1997年的前2个字符
SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/97', 3), 120);
它给出了结果集如下:
Date
1997-10-11
所以它从DD / MM / YY格式转换为YYYY-MM-DD
很好但是为什么它已经花了1997年,如果我要给17,它会给2017年。 如果我给37,它将给2037,如果我给67,它给1967。
最后DD / MM / YYYY到YYYY-MM-DD格式怎么样
答案 0 :(得分:1)
指定四位数年份时,您需要使用103
:
SELECT CONVERT(DATE, '11/10/1997', 103)
-- 1997-10-11 (DATE)
如果您想将日期转换回字符串,请再次转换:
SELECT CONVERT(VARCHAR(10), CONVERT(DATE, '11/10/1997', 103), 120)
-- 1997-10-11 (VARCHAR)
样式的完整列表 is available here。
答案 1 :(得分:0)
而不是3你可以双关语103。
所以:
SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/1997', 103), 120);
将返回1997-10-11
答案 2 :(得分:0)
你能试试吗?
declare @datechar as char(19) ='11/10/1997'
select FORMAT(convert(date,@datechar,103),'yyyy-MM-dd')