Sql server 查询中存在一些错误:RequestError:从字符串转换日期和/或时间时转换失败

Sql server 查询中存在一些错误:RequestError:从字符串转换日期和/或时间时转换失败,sql-server,node.js,sql-server-2008,Sql Server,Node.js,Sql Server 2008,运行此查询时,我正在使用MS SQL Server 2008 select top 1 * from table_name where ModifiedDate='Wed Mar 16 2016 15:52:20 GMT+0530 (IST)' 我得到这个错误 there were some errors in the query: RequestError: Conversion failed when converting date and/or time from character s

运行此查询时,我正在使用MS SQL Server 2008

select top 1 * from table_name where ModifiedDate='Wed Mar 16 2016 15:52:20 GMT+0530 (IST)'
我得到这个错误

there were some errors in the query: RequestError: Conversion failed when converting date and/or time from character string.
我还尝试了
CAST
CONVERT
,但出现了相同的错误


我用

直接回答问题,用这个代替:

select top 1 * from table_name where ModifiedDate=cast('2016-03-16 15:52:20 +05:30' as datetimeoffset)
现在解释一下。要使用时区,您需要使用datetimeoffset-常规datetime字段不包括时区信息。因此,这将起作用:

select cast('2016-7-16 15:52:20 +05:30' as datetimeoffset)
使用AdventureWorks2012(此语法也适用于sql 2008,但这是演示如何针对AW2012数据库编写此查询):

注意:在本例中,AW2012在此表中使用datetime字段,但不使用datetimeoffset字段-尽管如此,它还是编译并运行

下一个示例演示了时区偏移的工作原理:

select top 1 * from Person.Address where ModifiedDate=cast('2002-01-04 04:00:00 +04:00' as datetimeoffset)
这将返回一个值,而将偏移量更改1小时不会返回任何结果。(表中有一条记录的修改日期为2002-01-04 00:00:00):


你的“ModifiedDate”专栏是什么datatype@DineshDB,它肯定是
datetime/date
,因此是上述错误。
select top 1 * from Person.Address where ModifiedDate=cast('2002-01-04 04:00:00 +04:00' as datetimeoffset)
select top 1 * from Person.Address where ModifiedDate=cast('2002-01-04 04:00:00 +03:00' as datetimeoffset)