所以我试图从一个表格中选择不同的运算符,其时间组件的格式如下:‘MM / DD / YYYY HH:MI:SS AM’。
逻辑是这样的:
(如果C_StartTime> = date(C_StartTime)+ …
我想你可能会喜欢这样的东西 trunc(c_starttime - 6/24) + 6/24 让这一天从早上6点而不是午夜开始:
trunc(c_starttime - 6/24) + 6/24
WITH dts AS (SELECT to_date('13/03/2019 05:59:59', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL SELECT to_date('13/03/2019 06:00:00', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL SELECT to_date('13/03/2019 06:00:01', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL SELECT to_date('14/03/2019 05:59:59', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL SELECT to_date('14/03/2019 06:00:00', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual) SELECT dt, dt - 6/24 adj_dt, TRUNC(dt - 6/24) trunc_adj_dt, TRUNC(dt - 6/24) + 6/24 adj_start_of_dt FROM dts; DT ADJ_DT TRUNC_ADJ_DT ADJ_START_OF_DT ------------------- ------------------- ------------------- ------------------- 13/03/2019 05:59:59 12/03/2019 23:59:59 12/03/2019 00:00:00 12/03/2019 06:00:00 13/03/2019 06:00:00 13/03/2019 00:00:00 13/03/2019 00:00:00 13/03/2019 06:00:00 13/03/2019 06:00:01 13/03/2019 00:00:01 13/03/2019 00:00:00 13/03/2019 06:00:00 14/03/2019 05:59:59 13/03/2019 23:59:59 13/03/2019 00:00:00 13/03/2019 06:00:00 14/03/2019 06:00:00 14/03/2019 00:00:00 14/03/2019 00:00:00 14/03/2019 06:00:00
我已经选择了adj_dt和trunc_adj_dt列,以便您可以看到如何从原始dt列计算adj_start_of_dt列。
您可能不需要在开始日期列上输出6am,因此您可以跳过它(即它是trunc_adj_dt,即在这种情况下您将要使用的列)。