tSQL手动追加时间



我有一个表,它处理我在其他表中使用的加载时间。最近,我们开始处理不同的时区,当我们现在研究日期时间偏移时,我们希望手动设置格式为smalldatetime的SQL列的时间部分。我尝试了以下各种变体:

DECLARE @AZTime smalldatetime
SET @AZTime = '2014-04-16 07:00:00.000'
UPDATE DATE_CONTROL
SET StartRangeDate = convert(varchar(8),getdate()-1,20) + CONVERT(CHAR(5), @AZTime, 8),
EndRangeDate = convert(varchar(8),getdate(),20) + CONVERT(CHAR(5), @AZTime, 8)
WHERE Description ='Date Load'

但我得到了错误:

Msg 295, Level 16, State 3, Line 4
Conversion failed when converting character string to smalldatetime data type.

在我尝试过的大多数方法中。我相信smalldatetime可以处理数据,就像我之前使用dateadd函数更改小时一样,但我需要手动设置小时,而不是现在使用dateadd。我在SQL Server 2008R2上执行此操作。

更新:

将varchar更改为11我得到了正确的格式:

DECLARE @AZTime smalldatetime
SET @AZTime = '2014-04-16 07:00:00.000'
Select StartRangeDate = Convert(varchar(11),getdate()-1,20) + CONVERT(CHAR(5), @AZTime, 8),
EndRangeDate = convert(varchar(11),getdate(),20) + CONVERT(CHAR(5), @AZTime, 8)

结果:

StartRangeDate          EndRangeDate
2014-04-15 07:00    2014-04-16 07:00

set语句中使用了不正确的varchar计数,而没有通过select进行测试。

DECLARE @AZTime smalldatetime
SET @AZTime = '2014-04-16 07:00:00.000'
UPDATE DATE_CONTROL
SET StartRangeDate = convert(varchar(11),getdate()-1,20) + CONVERT(CHAR(5), @AZTime, 8),
EndRangeDate = convert(varchar(11),getdate(),20) + CONVERT(CHAR(5), @AZTime, 8)
WHERE Description ='Date Load'

相关内容

  • 没有找到相关文章

最新更新