Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server更改日期格式以接受d/m/y_Sql Server - Fatal编程技术网

Sql server SQL Server更改日期格式以接受d/m/y

Sql server SQL Server更改日期格式以接受d/m/y,sql-server,Sql Server,一个应用程序正在将下面的查询传递给SQL server,我从SQL server收到一个异常,因为将varchar数据类型转换为datetime数据类型导致值超出范围 此外,我在分析器中看不到以下错误 我试过的是 将SQL server的日期格式更改为DMY 将语言更改为en GB 我无法更改代码,因此如何通过更改SQL server配置来实现此功能?请尝试以下操作: update Images set Created_DATE=CONVERT(DATETIME, N'23/09/2020

一个应用程序正在将下面的查询传递给SQL server,我从SQL server收到一个异常,因为将varchar数据类型转换为datetime数据类型导致值超出范围

此外,我在分析器中看不到以下错误

我试过的是

将SQL server的日期格式更改为DMY 将语言更改为en GB 我无法更改代码,因此如何通过更改SQL server配置来实现此功能?

请尝试以下操作:

update Images 
set  Created_DATE=CONVERT(DATETIME, N'23/09/2020 11:00:09', 103) 
where ID = 10
您需要将字符串转换为日期设置区域性。否则,引擎将无法理解格式,因为存在各种格式

我相信,您的日期类型是DATETIME,这就是为什么会出现以下错误:

SELECT CAST('23/09/2020 11:00:09' AS DATETIME);
结果如下:

Msg 242,16级,状态3,第4行varchar数据的转换 类型转换为日期时间数据类型导致值超出范围

对于DATETIME2,它是:

转换时,Msg 241,16级,状态1,第4行转换失败 来自字符串的日期和/或时间


您不需要双引号。如果仍然需要,请使用convert函数。如果您无法更改代码并且是关于SQLServer配置的,为什么要将其标记为C和.NET?我要做的第一件事是,请编写该应用程序的人员将日期传递为DateTime,而不是字符串。如果您无法更改代码,你可以做几件事,首先想到的是。。。例如,如果您有一个名为MyTable的表,那么创建表MyTable_2可以随意命名,在MyTable insert上创建一个触发器,并将该字符串date转换为datetime,然后将其插入MyTable_2。问题是查询来自应用程序,我无法更改应用程序代码。在SQL server中,可以通过更改配置或使用触发器来处理它吗?@Jay,不,您不能使用触发器。您可以更改默认语言-它是英式英语,但仍然会出现错误,尽管英式英语的dateformat是D/M/YSo,如果您按照我在SQL Server Management Studio中的回答执行代码,您仍然会遇到错误?嗯,应用程序代码本身可以设置语言。您可以使用“选择@@language”创建一个触发器来记录当前语言,并检查您的数据库设置是否被覆盖。此外,在SSMS中,如果您只是在新的查询窗口中执行,请选择CASTN'23/09/2020 11:00:09'作为日期时间;-这个还能用吗?
SELECT CAST('23/09/2020 11:00:09' AS DATETIME);