我正在尝试利用从纪元时间到人类可读形式的转换的时间部分。这是当前数据输出的样子:
票号 | 已创建 | 完成 |
---|---|---|
14111487 | 2/1/2023 凌晨 1:36 | 2/15/2023 早上 6:00 |
14116522 | 2/1/2023 晚上 11:18 | 2/15/2023 早上 6:00 |
14116477 | 2/1/2023 晚上 11:23 | 2/17/2023 晚上 9:25 |
14116425 | 2/1/2023 晚上 10:47 | 2/15/2023 下午 5:05 |
这就是我想要的样子:
票号 | 已创建 | 完成 |
---|---|---|
14111487 | 2/1/2023 | 2/15/2023 |
14116522 | 2/1/2023 | 2/15/2023 |
14116477 | 2/1/2023 | 2/17/2023 |
14116425 | 2/1/2023 | 2/15/2023 |
我到底如何摆脱查询中的时间,我不需要它。这是我正在使用的查询的相关部分:
SELECT
TICKET.TICK_NUM AS "Ticket Number",
TO_DATE('19700101', 'YYYYMMDD') + (DATECREATED / 86400) AS "Created",
TO_DATE('19700101', 'YYYYMMDD') + (FIXEDTIME / 86400) AS "Completed"
FROM TICKET
WHERE
TICKET.DATECREATED BETWEEN 1675209600 and 1677196800;
我正在使用 Oracle Developer 21.4.3
如果您想将时间组件设置为午夜,请在添加日期之前使用
FLOOR
或 TRUNC
将数字向下舍入为一整天:
SELECT TICKET.TICK_NUM AS "Ticket Number",
DATE '1970-01-01' + FLOOR(DATECREATED / 86400) AS "Created",
DATE '1970-01-01' + FLOOR(FIXEDTIME / 86400) AS "Completed"
FROM TICKET
WHERE TICKET.DATECREATED BETWEEN 1675209600 and 1677196800;
SELECT TICKET.TICK_NUM AS "Ticket Number",
DATE '1970-01-01' + TRUNC(DATECREATED / 86400) AS "Created",
DATE '1970-01-01' + TRUNC(FIXEDTIME / 86400) AS "Completed"
FROM TICKET
WHERE TICKET.DATECREATED BETWEEN 1675209600 and 1677196800;
或者
TRUNC
在添加纪元时间后设置日期:
SELECT TICKET.TICK_NUM AS "Ticket Number",
TRUNC(DATE '1970-01-01' + DATECREATED / 86400) AS "Created",
TRUNC(DATE '1970-01-01' + FIXEDTIME / 86400) AS "Completed"
FROM TICKET
WHERE TICKET.DATECREATED BETWEEN 1675209600 and 1677196800;
或者,如果您只想将其格式化为日期字符串以在没有时间组件的情况下显示它,请使用
TO_CHAR
:
SELECT TICKET.TICK_NUM AS "Ticket Number",
TO_CHAR(DATE '1970-01-01' + DATECREATED / 86400, 'YYYY-MM-DD') AS "Created",
TO_CHAR(DATE '1970-01-01' + FIXEDTIME / 86400, 'YYYY-MM-DD') AS "Completed"
FROM TICKET
WHERE TICKET.DATECREATED BETWEEN 1675209600 and 1677196800;