Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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 选择日期(“2007-04-30T01:01:01.1234567-07:00”)不起作用?_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql server 选择日期(“2007-04-30T01:01:01.1234567-07:00”)不起作用?

Sql server 选择日期(“2007-04-30T01:01:01.1234567-07:00”)不起作用?,sql-server,sql-server-2012,Sql Server,Sql Server 2012,此sql语句: SELECT DAY('2007-04-30T01:01:01.1234567 -07:00'); 从SQL Server 2012文档中复制,并在我的SQL Server 2012 express edition环境中进行测试。但是有一个错误是这样说的 从字符串转换日期和/或时间时,转换失败 我知道在DAY中传递的字符类型参数无法转换为datetime类型值,这意味着它的格式错误,与某些与SET DATEFORMAT相关的当前设置或我不知道的任何设置不兼容。这就是我想知道的。

此sql语句:

SELECT DAY('2007-04-30T01:01:01.1234567 -07:00');
从SQL Server 2012文档中复制,并在我的SQL Server 2012 express edition环境中进行测试。但是有一个错误是这样说的

从字符串转换日期和/或时间时,转换失败

我知道在DAY中传递的字符类型参数无法转换为datetime类型值,这意味着它的格式错误,与某些与SET DATEFORMAT相关的当前设置或我不知道的任何设置不兼容。这就是我想知道的。你能解释一下为什么不是我的示例语句在我的环境中不起作用吗。我的SQL Server实例是使用默认设置安装的,安装后我没有做任何更改

通过稍微修改输入字符串,它可以工作:

SELECT DAY('2007-04-30T01:01:01.123'); -- Works!
但这些并不是我一开始发布的错误:

SELECT DAY('2007-04-30T01:01:01.1234'); -- just add 4
SELECT DAY('2007-04-30T01:01:01.123 -07:00'); -- just add -07:00
似乎有一些设置与此问题相关,请告诉我可能是什么以及如何解决此问题。我不想更改输入字符串,因为我试图使其正常工作

谢谢你花时间解决我的问题

更新:

也做了一些建议,比如:

SELECT DAY('2007-04-30T01:01:01.1234567-07:00');
SELECT DAY('2007-04-30T01:01:01.123-07:00');

但它仍然不起作用

嗯,我发现了问题所在。事实上,正如一些人所建议的那样,声明本身应该是有效的,但这只是问题的一个方面。另一方面是当前Database的兼容性级别。在我的例子中,它只有90,也就是SQLServer2005,所以需要显式强制转换。通过将兼容级别更改为110 SQL Server 2012或显式强制转换,它可以正常工作。

您是否意识到导致错误的只是ms和tz之间的空间?本工程选择日期“2007-04-30T01:01:01.1234567-07:00”;。文档中可能有错误?!?这确实是文档中的一个错误。具体而言,的文档包含此错误示例。的文档明确指出datetimeoffset和datetime部分之间不允许使用空格。我在页面上添加了一条评论,大意是这样的。@jamice这可能是个错误,但这并不是问题所在。我已经按照你的建议做了尝试,但仍然显示出错误。还要注意示例“2007-04-30T01:01:01.1234”,该示例也给出了该错误。选择DAYCAST“2007-04-30T01:01:01.1234567-07:00”作为DATETIMEOFFSET是什么;product?@jeroenmoster这样的强制转换当然可以正常工作,我怀疑输入字符串是否理解为datetime字符串,而不是datetime2字符串,但正如您看到的,该语句在其他环境中工作,而不是在我的环境中。