【发布时间】:2016-05-11 06:25:16
【问题描述】:
我需要将 varchar 转换为日期时间。我尝试过类似以下的方法
declare @datevarchar(150)='01/10/15'
declare @datenew date
select
@datenew = convert(smalldatetime, CONVERT(nvarchar(10), CAST(@date AS DATETIME), 101) ,101)
print @datenew
输出是:2015-01-10
但是当我将日期更改为
declare @date varchar(150)='13/10/15'
它会抛出以下错误:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
日期时间的结果格式为 YYYY-MM-DD。我想要 DD-MM-YYYY 格式的结果..
我该怎么办?
提前致谢
【问题讨论】:
-
只需将变量定义为
2015-01-10。使用标准的日期格式,您的问题就会迎刃而解。 -
如果您在此处查看代码 101 msdn.microsoft.com/en-AU/library/ms187928.aspx,您会看到它需要 m/d/y 格式(并且 13 不是一个月)。你能退后一步解释一下你真正想要做什么吗?为什么你关心日期的格式是什么?这取决于您当时碰巧使用的任何客户端工具。
-
始终坚持标准的 YYYY-MM-DD 格式。 (如果您出于某种原因想要以其他格式显示,请尽可能晚地进行转换。)
标签: sql sql-server-2008 datetime type-conversion varchar