Sql 从同一表中的另一列设置DateTime中的时间
我有一个日期字段&表中的记录被错误地更新,而没有设置时间 我想首先找到这样的记录,然后用同一个表中的时间更新它们 在这张图中,Sql 从同一表中的另一列设置DateTime中的时间,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一个日期字段&表中的记录被错误地更新,而没有设置时间 我想首先找到这样的记录,然后用同一个表中的时间更新它们 在这张图中,2018-07-20的记录没有时间,所以我想更新In_timetime toIn_Date,这样输出将是2018-07-20 06:21:00 我想搜索所有这些记录并更新相同的计时 有什么方法可以通过查询实现这一点吗?您应该可以只添加时间和日期组件 UPDATE yourTable SET In_Date = In_Date + CAST(In_Hour AS
2018-07-20
的记录没有时间,所以我想更新In_time
time toIn_Date
,这样输出将是2018-07-20 06:21:00
我想搜索所有这些记录并更新相同的计时
有什么方法可以通过查询实现这一点吗?您应该可以只添加时间和日期组件
UPDATE yourTable
SET
In_Date = In_Date + CAST(In_Hour AS datetime),
Out_Date = Out_Date + CAST(Out_Hour AS datetime);
假设日期列已经是datetime
,则上述操作应该有效。然后,将小时列强制转换为datetime
应该只生成一个小时组件
但是,我建议不要将时间和日期分开存储,除非您有非常具体的原因这样做。相反,我认为只记录输入和输出时间戳就足够了。您应该能够添加时间和日期组件
UPDATE yourTable
SET
In_Date = In_Date + CAST(In_Hour AS datetime),
Out_Date = Out_Date + CAST(Out_Hour AS datetime);
假设日期列已经是datetime
,则上述操作应该有效。然后,将小时列强制转换为datetime
应该只生成一个小时组件
但是,我建议不要将时间和日期分开存储,除非您有非常具体的原因这样做。相反,我认为只记录输入和输出时间戳就足够了。考虑到在
输入时间
和输出时间
列中将分钟存储为整数
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'
将分钟作为整数存储在
in\u Time
和Out\u 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'
In\u Hour
和Out\u Hour
列的类型是什么?In\u Hour
是string
但是In\u Time
是int
。In\u Hour和Out\u Hour
列的类型是什么?In\u Hour
是string
但是In\u Time
是谢谢为了得到答案,我会试试这个&让你知道。但是如何查找包含时间00:00:00
的记录,因为还有其他包含计时的记录,我不想更新。@Anup如果时间组件确实是00:00:00
,那么我建议的更新不会改变任何内容。我甚至不确定这是一个边缘的情况,你需要担心。谢谢你的回答,我会试试这个&让你知道。但是如何查找包含时间00:00:00
的记录,因为还有其他包含计时的记录,我不想更新。@Anup如果时间组件确实是00:00:00
,那么我建议的更新不会改变任何内容。我甚至不确定这是否是一个边缘案例,你需要担心。这是完美的工作。谢谢我在一条update语句中成功地实现了这一点。这非常有效。谢谢我设法在一条update语句中完成了这项工作。