首页 > 解决方案 > 具有恒定时间的 Oracle SQL sysdate

问题描述

在此处输入图像描述我有以下查询-

update esp_notification set start_date_time = TO_DATE('06-25-2020 12:15', 'MM/DD/YYYY hh24:mi') where serial_number ='AUTOSMOK0489' and status = 'active';

例如-

2020 年 6 月 24 日-系统日期,12:15-系统时间。上述数值仅供参考。我将始终选择当前系统日期和当前系统时间,仅用于第一次运行。第 2 次、第 3 次、第 4 次......运行日期应减 1,时间必须与第一次运行相同。

我想简化我的问题,因为它看起来很混乱。

在上面的查询中,我想在每次运行时更改今天的日期 1(即 06/22/2020)和时间应该是恒定的,即与以前相同(即 04:57)。

Example-
On 1st execution-'06/24/2020 12:15'
On 2nd execution-'06/23/2020 12:15'
On 3rd execution-'06/22/2020 12:15'
On 4th execution-'06/21/2020 12:15'
On 5th execution-'06/20/2020 12:15'
On 6th execution-'06/19/2020 12:15'
On 7th execution-'06/18/2020 12:15'

查询执行后,它只更新一行。如何修改 SQL 查询来实现这一点?

I tried to execute the query like-
update esp_notification set start_date_time = TO_DATE(start_date_time-1, 'YYYY-MM-DD hh:mi') where serial_number ='AUTOSMOK7879' and status = 'active';

但是这个查询会随机更新 'start_date_time' 列值,而不是设置 date-1 值。DB 具有 '2020-07-01 03:43:30.0' 格式的 'start_date_time' clumn 值。

标签: sqloracle

解决方案


请使用以下查询 update esp SET to_date((to_char(SYSDATE,'MM/DD/YYYY')||' 04:57'),'MM/DD/YYYY hh24:mi') where serial_number ='OK0489' and status = 'active';


推荐阅读