我是SQL Server的新手,面临一个问题。我正在尝试将yyyy-mm-dd
格式的日期时间转换为dd/mm/yyyy
。
在代码下方使用以更改格式,如果dd <=12
则效果良好,如果The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
dd>12
Declare @LastTime datetime
set @LastTime = '2015-06-12 12:08:18.690'
select convert(varchar, @LastTime, 101)
尝试使用其他输出格式(from here),但没有运气。有没有办法解决这个问题。我使用的是SQL Server 2008版本。这里提到很多帖子,但没有一个解决了这个问题。
提前致谢。
答案 0 :(得分:1)
如果您只想更改日期格式,请尝试使用:
设置日期格式DMY
只需将其写在屏幕上,选择它并执行它,这将允许您以您想要的格式使用DATE类型,直到您关闭会话。 DATE类型将是一个字符串
答案 1 :(得分:0)
错误来自set @LastTime = ...
而非select convert(...)
错误是因为您当前的dateformat
是dmy
(默认语言隐式设置)
如果您只想更改dateformat
,那么set dateformat mdy;
将允许您使用字符串@LastTime
设置2016-06-13
(2016年6月13日)。
如果您不想更改dateformat
,可以在设置convert
时指定与@LastTime
一起使用的字符串的样式,在这种情况下,是121
(120
也可以。)
rextester:http://rextester.com/CWZP33091
试试这个:
declare @LastTime datetime;
set @LastTime = convert(datetime,'2015-06-12 12:08:18.690',121);
select convert(varchar, @LastTime, 101);
答案 2 :(得分:0)
在https://msdn.microsoft.com/en-us/library/ms187928.aspx
查看有关强制转换和转换的MSDN文档我猜这种风格103适合你。
尝试使用
选择转换(varchar,@ LastTime,103)
我现在没有机会查看它,因为我手头没有MS SQL Server。
由于风格101转换为&#39; mm / dd / yyyy&#39;很清楚为什么dd&gt; 12会导致错误,因为转换是试图转换&#39; mm&#39; mm&#39;作为一个月有效值为1 - 12的月份,您提供了&#39; dd&#39;从1-31开始。
希望有所帮助
小心
安德烈亚斯