将日期时间转换为SQL Server

时间:2016-12-08 20:02:18

标签: sql-server sql-server-2008 datetime

我是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版本。这里提到很多帖子,但没有一个解决了这个问题。

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果您只想更改日期格式,请尝试使用:
    设置日期格式DMY 只需将其写在屏幕上,选择它并执行它,这将允许您以您想要的格式使用DATE类型,直到您关闭会话。 DATE类型将是一个字符串

答案 1 :(得分:0)

错误来自set @LastTime = ...而非select convert(...)

错误是因为您当前的dateformatdmy(默认语言隐式设置)

如果您只想更改dateformat,那么set dateformat mdy;将允许您使用字符串@LastTime设置2016-06-13(2016年6月13日)。

如果您不想更改dateformat,可以在设置convert时指定与@LastTime一起使用的字符串的样式,在这种情况下,是121120也可以。)

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开始。

希望有所帮助

小心

安德烈亚斯