【问题标题】:Oracle SQL merge multiple columns into datetime stampOracle SQL 将多列合并为日期时间戳
【发布时间】:2021-04-22 03:50:04
【问题描述】:

我目前有一个数据集,其中日期和时间分为多列。我正在寻找创建日期时间戳列的解决方案。

以下是字段示例:

**首选时间戳:DD-MON-RRRR HH12:MI:SS **

2020 年 8 月 3 日 07:25:18

Oracle 版本 19.2.1.247

提前谢谢你

【问题讨论】:

  • 您的列的数据类型是什么?它们的确切列名是什么?我不会为他们使用dayhouryear。我建议为此添加虚拟隐藏计算列

标签: sql oracle datetime


【解决方案1】:
CREATE TABLE TIMESTAMPS
(
  YEAR NUMBER,
  MONTH NUMBER,
  STARTMONTHNAME VARCHAR2(30),
  DAY NUMBER,
  HOUR NUMBER,
  MIN NUMBER,
  SEC NUMBER
);
  
INSERT INTO TIMESTAMPS VALUES (2020, 8, 'August', 3, 7, 25, 18);
INSERT INTO TIMESTAMPS VALUES (2021, 8, 'August', 3, 7, 25, 18);

使用您的时间戳格式。

SELECT TO_CHAR(
       TO_TIMESTAMP(YEAR||'-'||STARTMONTHNAME||'-'||DAY||'-'||HOUR||
       '-'||MIN||'-'||SEC, 'YYYY-MONTH-DD-HH-MI-SS'),
       'DD-MON-RRRR HH12:MI:SS') "TIME"
FROM TIMESTAMPS;

日期

SELECT TO_CHAR(
       TO_DATE(YEAR||'-'||STARTMONTHNAME||'-'||DAY||'-'||HOUR||
       '-'||MIN||'-'||SEC, 'YYYY-MONTH-DD-HH-MI-SS'),
       'DD-MON-RRRR HH12:MI:SS') "TIME"
FROM TIMESTAMPS;

【讨论】:

  • 谢谢 - 我如何使这个查询与多条记录一起工作?我收到此错误:ORA-01427:单行子查询返回多于一行
  • 更新了答案。
  • 但请确保您确实需要 Timestamp 而不是 Date,Timestamp 也有几分之一秒,这可能是您不想要的。
  • 我不知道...如何将其更改为日期?
  • 您只需将 to_timestamp 替换为 to_date。我已经编辑了我的答案。
猜你喜欢
  • 2016-06-07
  • 1970-01-01
  • 2016-09-30
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 2020-09-26
  • 1970-01-01
相关资源
最近更新 更多