我收到此错误消息:
消息241,级别16,状态1,第7行
从字符串转换日期时间时转换失败。
在写剧本的时候。
declare
@startdt datetime,
@enddt datetime
SET @startdt = '2014-04-04' +'00:00:01'
SET @EndDt ='2014-04-04' + ' 23:59:59'
EXEC sp_Insert_JC_Payment @startdt,@enddt
我该怎么办?
转换脚本放在哪里?
非常感谢
2条答案
按热度按时间5uzkadbs1#
SQL Server支持许多格式-请参阅MSDN Books Online on CAST and CONVERT。这些格式中的大多数取决于您的设置-因此,这些设置有时可能有效,有时无效。
解决此问题的方法是使用SQL Server支持的ISO-8601日期格式(略有调整)-此格式始终有效-无论SQL Server语言和日期格式设置如何。
SQL Server支持的ISO-8601 format有两种类型:
YYYYMMDD
仅用于日期(无时间部分);注意:没有破折号!,这是非常重要的!YYYY-MM-DD
不独立于SQL Server中的日期格式设置,并且不适用于所有情况!或:
YYYY-MM-DDTHH:MM:SS
表示日期和时间-请注意:这个格式 * 有 * 破折号(但是他们 * 可以 * 被省略),和一个固定的T
作为你的DATETIME
的日期和时间部分之间的分隔符。这对SQL Server 2000和更新版本有效。
如果您使用SQL Server 2008或更高版本以及
DATE
数据类型(仅限DATE
-而非DATETIME
!),那么您确实也可以使用YYYY-MM-DD
,并且这也适用于SQL Server中的任何设置。不要问我为什么这整个主题如此棘手和令人困惑--事情就是这样。但是使用
YYYYMMDD
,您应该可以适应任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置。对于SQL Server 2008及更高版本,建议在仅需要日期部分时使用
DATE
,在同时需要日期和时间时使用DATETIME2(n)
。如果可能,应尝试开始逐步淘汰DATETIME
数据类型。所以在你的例子中,我会尝试使用:
然后你就该走了!
llew8vvj2#
您可以尝试以下代码: