在 SQL DateTime 中转换字符串 (yyyy-MM-dd HH:mm TT) 时出错
Posted
技术标签:
【中文标题】在 SQL DateTime 中转换字符串 (yyyy-MM-dd HH:mm TT) 时出错【英文标题】:Having error when convert string (yyyy-MM-dd HH:mm TT) in SQL DateTime 【发布时间】:2015-09-17 13:57:56 【问题描述】:我正在尝试将日期时间字符串 (yyyy-MM-dd HH:mm TT) 转换为 SQL 日期时间,但遇到以下错误:
从字符串转换日期和/或时间时转换失败。
我在 SQL Server 中的输入:
select CONVERT(DATETIME, '2015-08-06 1:00 PM')
【问题讨论】:
它在我们的放置窗口中显示错误。 "从字符串转换日期和/或时间时转换失败。" 你确定你正在运行那个确切的代码吗?如果是这样,什么版本的sql server,因为那个代码没有问题。 是的。我从过去 2 天开始就面临这个问题。我的 SQL 版本“Microsoft SQL Server Management Studio 11.0.3128.0” 我认为这不是您的错误的原因,但值得注意的是,yyyy-MM-dd
格式对于 SQL Server 中的 DATETIME
和 SMALLDATETIME
是文化敏感的。您应该使用yyyyMMdd
格式,或者先明确设置日期格式SET DATEFORMAT DMY
。目前,您的日期2015-08-06
可能被解释为 6 月 8 日或 8 月 6 日,具体取决于设置。
您是在运行该 EXACT 代码,还是在您的帖子中使用硬编码字符串值所在的列名?
【参考方案1】:
使用标准格式:YYYYMMDD 或 YYYY-MM-DD-THH:MM:SS。例如 20150806 或 2015-08-06T01:00:00。它适用于任何设置。
【讨论】:
以上是关于在 SQL DateTime 中转换字符串 (yyyy-MM-dd HH:mm TT) 时出错的主要内容,如果未能解决你的问题,请参考以下文章
SQL中如何将数值格式的20110801(2011年8月01日)转换为日期格式的201108或者2011-08?
在java中将dateTime转换为dd/MM/yy格式的日期
在 C# 中将字符串转换为 DateTime 并写入 SQL