从字符串转换日期和/或时间时出现SQL转换错误

时间:2018-02-06 17:49:29

标签: sql sql-server sql-server-2008

从昨天下午5点开始查询

Declare @DATEFROM DATETIME=CONVERT(VARCHAR(10),GETDATE()-1,103) + '17:00:00.00'
select @DATEFROM

期待2018-02-05 17:00:00

  

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

SQL Server 2008.需要格式yyyy-mm-dd(2018-02-05 17:22:00.000)

5 个答案:

答案 0 :(得分:1)

使用Declare @DATEFROM DATETIME=dateadd(hh,17,CONVERT(VARCHAR(10),GETDATE()-1,103)) select @DATEFROM

,而不是添加日期字符串
Declare @DATEFROM DATETIME=CONVERT(VARCHAR(10),GETDATE()-1,103) + cast('17:00:00.00' as datetime)
select @DATEFROM

或者如果您必须添加日期字符串,请先将其转换为日期时间:

npm install material-ui@latest

答案 1 :(得分:1)

易于实施:

SELECT DATEADD(HOUR, 17, GETDATE()-1 - CAST(getDate() as time))

答案 2 :(得分:0)

您必须先获取varchar然后再转换回日期时间

Declare @DATEFROM varchar(22) = CONVERT(VARCHAR(10),GETDATE()-1,103) + ' 17:00:00.00'
select CAST(@DATEFROM AS datetime)

答案 3 :(得分:0)

我不确定你想要完成什么,但是这将产生你正在寻找的时间索引的日期,除非特别指出你昨天可以用1替换前0的日期/ p>

declare @date datetime = dateadd(day, datediff(day, 0, sysdatetime()), 0) + .70833333333333333333
select @date

答案 4 :(得分:0)

declare @dateFrom datetime=cast(dateAdd(dd, - 1,cast(getDate() as date) ) as datetime) +'17:00:00'