在 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 中的 DATETIMESMALLDATETIME 是文化敏感的。您应该使用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 时间格式转换

SQL中如何将数值格式的20110801(2011年8月01日)转换为日期格式的201108或者2011-08?

在java中将dateTime转换为dd/MM/yy格式的日期

在 C# 中将字符串转换为 DateTime 并写入 SQL

转换SQL datetime以在输入类型datetime local中显示

SQL日期格式转换? [dd.mm.yy 到 YYYY-MM-DD]