从同一表中的另一列设置DateTime中的时间

时间:2018-07-25 05:39:06

标签: sql sql-server sql-server-2012

我有日期字段,并且错误地更新了表中的记录,而没有设置时间。

我想首先找到此类记录,然后使用同一表中的时间更新它们。

enter image description here

在此图像中,2018-07-20的记录没有时间,因此我想将In_Time的时间更新为In_Date,因此输出将为2018-07-20 06:21:00

我想搜索所有此类记录并更新相同的时间。

我可以通过查询执行任何操作吗?

2 个答案:

答案 0 :(得分:3)

您应该能够只添加时间和日期组件。

UPDATE yourTable
SET
    In_Date = In_Date + CAST(In_Hour AS datetime),
    Out_Date = Out_Date + CAST(Out_Hour AS datetime);

上面的方法应该在日期列已经为datetime的情况下工作。然后,将小时列强制转换为datetime只会产生一个小时部分。

Demo

但是,我建议不要分开存储时间和日期,除非您有非常具体的理由。相反,我认为仅记录进/出时间戳就足够了。

答案 1 :(得分:3)

考虑到您将分钟数存储为In_TimeOut_Time列中的整数。

UPDATE [TableName]
SET
In_Date=DATEADD(MINUTE,In_Time,In_Date)
where CAST(In_Date as time(0)) ='00:00:00'



UPDATE [TableName]
SET
Out_Date=DATEADD(MINUTE,Out_Time,Out_Date)
where CAST(Out_Date as time(0)) ='00:00:00'