sql - SQL:我需要格式化一个 Select Distinct 语句,其中一个 Case 作为值之一
问题描述
因此,我尝试从具有如下格式的时间组件的表中选择不同的运算符:'MM/DD/YYYY HH:MI:SS AM。
逻辑是这样的:
(if C_StartTime >= date(C_StartTime) + 6:00:00 AM
AND C_StartTime < date(C_StartTime) + 5:59:59AM
then C_StartTime,'MM/DD/YYYY'
ELSE (C_StartTime,'MM/DD/YYYY')-1)
AS DateOnly
我现在可以选择不同的操作员,但他们每天登录和退出几次,所以时间不同。需要注意的是,这家公司的“今天”是 3/13/19 6:00:00 AM 到 3/14/19 5:59:59 AM。
下面是我尝试执行的最终代码
SELECT
DISTINCT (
(
CASE WHEN C_StartTime >= date(C_StartTime) +.25
AND C_StartTime < date(C_StartTime) +.9999
THEN date(C_StartTime)
ELSE date(C_StartTime) -1
) as DateOnly,
C_operator,
C_operatorname,
C_WorkCentreName
FROM
OPERATORTABLE
WHERE
.....
编辑>>>>>>
我正在寻找运营商编号、运营商名称和日期(知道 1/4/2019 5:59:00 AM = 1/3/2019
解决方案
我想你可能trunc(c_starttime - 6/24) + 6/24
想要让一天从早上 6 点而不是午夜开始:
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 列,以便您可以看到 adj_start_of_dt 列是如何从原始 dt 列计算出来的。
您可能不需要在开始日期列上输出 6am,因此您可以跳过它(即 trunc_adj_dt 是您在这种情况下要查找的列)。
推荐阅读
- hadoop - 纱线 - hadoop 没有正确初始化
- javascript - 加载外部js文件,修改里面的东西然后正常执行
- symfony - Symfony Doctrine 延迟加载 OneToOne 关系中的第二个孩子
- python - 绘图库
- progressive-web-apps - 即使从 Android chrome 浏览器启用 PWA 也不显示通知
- android - OnClickListener 的问题
- acumatica - 禁用默认导航 - 上一个和下一个
- android - 如何使用可绘制背景制作三角形角?
- r - 在 dcast() 参数“value.var”上
- python - Python - 'float' 对象不可下标(GEOJSON 文件)