Sql datetime列上的简单错误

Sql datetime列上的简单错误,sql,sql-server,Sql,Sql Server,我在datetime列的简单输入中遇到错误。如何输入此数据 我们在这里使用的是SQLServer2005 错误: 味精241,第16级,状态1,第1行 从字符串转换日期时间时转换失败 代码: 定义: DATE_ENTERED datetime 我也尝试过这种方法,20141118 10:34:09 AM和这个“2013年3月12日”同样的错误'20141111 05:05:05'(没有'AM'或'PM')应该正确转换,无论语言设置如何。SQL Server支持多种格式-请参阅。大多数格式取决于

我在
datetime
列的简单输入中遇到错误。如何输入此数据

我们在这里使用的是SQLServer2005

错误:


味精241,第16级,状态1,第1行
从字符串转换日期时间时转换失败

代码:

定义:

DATE_ENTERED datetime

我也尝试过这种方法,20141118 10:34:09 AM和这个“2013年3月12日”同样的错误

'20141111 05:05:05'
(没有'AM'或'PM')应该正确转换,无论语言设置如何。

SQL Server支持多种格式-请参阅。大多数格式取决于您的设置,因此,这些设置有时可能有效,有时无效

解决此问题的方法是使用SQL Server支持的(稍作调整的)ISO-8601日期格式,无论您的SQL Server语言和日期格式设置如何,此格式始终有效

SQL Server支持的有两种风格:

  • YYYYMMDD
    仅适用于日期(无时间段);注意:无破折号,这非常重要
    YYYY-MM-DD
    独立于SQL Server中的日期格式设置,在所有情况下都将工作
或:

  • 日期和时间的
    YYYY-MM-DDTHH:MM:SS
    -此处注意:此格式有破折号(但可以省略),并且在
    DATETIME
    的日期和时间部分之间有一个固定的
    T
    分隔符
这对SQL Server 2000及更新版本有效

不要问我为什么这个话题如此棘手,有些令人困惑——事实就是这样。但是使用
YYYYMMDD
格式,您应该可以使用任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置

因此,在您的具体案例中,请尝试以下方法:

INSERT INTO OGEN.EMR_MONITOR_TRANSACTIONS (PATIENT_ID, MONITOR_CODE, RESULTS, RESULTS_VALUES, NOTE, ADD_OBSERVATIONS, DATE_ENTERED, ENTERED_BY)
VALUES('103545281', 'P100', '1', '1', ' ', '111', '20141111T05:05:05', 'Nurse1')

从字符串转换日期时间时,Msg 241,级别16,状态1,第1行转换失败。能否共享
OGEN.EMR\u MONITOR\u事务的表定义
?insert语句看起来是正确的,因此可能是其他原因导致了此错误。@marc\s请向我们展示您的表定义。如果没有任何设计问题,此查询可以正常工作而不会出错
INSERT INTO OGEN.EMR_MONITOR_TRANSACTIONS (PATIENT_ID, MONITOR_CODE, RESULTS, RESULTS_VALUES, NOTE, ADD_OBSERVATIONS, DATE_ENTERED, ENTERED_BY)
VALUES('103545281', 'P100', '1', '1', ' ', '111', '20141111T05:05:05', 'Nurse1')