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 to
In_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语句中完成了这项工作。