SQL Server为yyyy-dd-mm格式,应用程序发送yyyy-mm-dd

SQL Server为yyyy-dd-mm格式,应用程序发送yyyy-mm-dd,sql,sql-server,configuration,date-format,Sql,Sql Server,Configuration,Date Format,应用程序尝试使用此查询插入数据时(yyyy/mm/dd): 我犯了一个错误 从数据类型varchar到datetime的转换产生的值超出范围 但是如果我将查询更改为(yyyy/dd/mm) 数据被插入。我需要更改yyyy/mm/dd格式才能工作的配置,如何解决此问题 谢谢SQL Server没有以任何字符串格式存储日期时间,而是存储为8字节的数值 各种设置(语言、日期格式)仅影响在SQL Server Management Studio中向您显示日期时间的方式,或者在您尝试将字符串转换为日期时间

应用程序尝试使用此查询插入数据时(yyyy/mm/dd):

我犯了一个错误

从数据类型varchar到datetime的转换产生的值超出范围

但是如果我将查询更改为(
yyyy/dd/mm

数据被插入。我需要更改
yyyy/mm/dd
格式才能工作的配置,如何解决此问题


谢谢

SQL Server没有以任何字符串格式存储
日期时间
,而是存储为8字节的数值

各种设置(语言、日期格式)仅影响在SQL Server Management Studio中向您显示日期时间的方式,或者在您尝试将字符串转换为日期时间时如何解析日期时间

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及更新版本有效

如果您使用SQL Server 2008或更高版本以及
日期
数据类型(仅
日期
-
日期时间
!),那么您确实也可以使用
YYYY-MM-DD
格式,这也适用于SQL Server中的任何设置

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

因此,对于您的具体案例,请尝试使用:

INSERT INTO Inv_Dueno_Equipo (Cod_Usuario,Fecha_Inicio,Fecha_Termino,Codigo_Equipo)
VALUES (1, '20120126', '20120131', 1);

您应该可以接受。

SQL Server不以任何字符串格式存储日期时间,而是存储为8字节的数值

各种设置(语言、日期格式)仅影响在SQL Server Management Studio中向您显示日期时间的方式,或者在您尝试将字符串转换为日期时间时如何解析日期时间

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及更新版本有效

如果您使用SQL Server 2008或更高版本以及
日期
数据类型(仅
日期
-
日期时间
!),那么您确实也可以使用
YYYY-MM-DD
格式,这也适用于SQL Server中的任何设置

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

因此,对于您的具体案例,请尝试使用:

INSERT INTO Inv_Dueno_Equipo (Cod_Usuario,Fecha_Inicio,Fecha_Termino,Codigo_Equipo)
VALUES (1, '20120126', '20120131', 1);
您应该对此很满意。

转换函数

INSERT INTO Inv_Dueno_Equipo (Cod_Usuario,Fecha_Inicio,Fecha_Termino,Codigo_Equipo) VALUES (1,convert('2012/01/26',103),convert('2012/01/31',103),1);
请看 根据需要链接并使用样式参数。

转换功能

INSERT INTO Inv_Dueno_Equipo (Cod_Usuario,Fecha_Inicio,Fecha_Termino,Codigo_Equipo) VALUES (1,convert('2012/01/26',103),convert('2012/01/31',103),1);
请看 根据需要链接并使用样式参数