【问题标题】:How can I remove milliseconds from Timestamp in Oracle? [duplicate]如何从 Oracle 中的时间戳中删除毫秒? [复制]
【发布时间】:2018-04-06 05:25:17
【问题描述】:

我想以 .csv 格式从“My_Customer”表中导出数据。
我正在提取时间字段,但我得到的输出与毫秒一起。
例如:
我得到的输出,
25-10-2017 12:53:12:00076
我想删除/截断毫秒。

预期输出-
25-10-2017 12:53:12

我试过to_char(),但它没有给出正确的输出。 (而不是给出该字段中可用的确切时间,而是rounding off)。

【问题讨论】:

  • 您为什么不分享您尝试过的结果和无效的结果? TO_CHAR() 应该可以工作

标签: sql oracle timestamp


【解决方案1】:

您可以将其转换为不带小数秒的时间戳(这将四舍五入到最接近的秒数):

CAST( your_timestamp AS TIMESTAMP(0) )

DATE 数据类型(这将截断到最接近的秒数):

CAST( your_timestamp AS DATE )

或者您可以将其转换为格式化字符串并指定您要使用的格式模型(这将截断到最接近的秒数):

TO_CHAR( your_timestamp, 'YYYY-MM-DD HH24:MI:SS' )

像这样:

SQL Fiddle

Oracle 11g R2 架构设置

CREATE TABLE your_table ( your_timestamp ) AS
  SELECT TIMESTAMP '2017-10-25 12:53:12.10076' FROM DUAL;

查询 1

SELECT CAST( your_timestamp AS TIMESTAMP(0) ) AS "Timestamp",
       CAST( your_timestamp AS DATE ) AS "Date",
       TO_CHAR( your_timestamp, 'DD-MM-YYYY HH24:MI:SS' ) AS "String"
FROM   your_table

Results

|             Timestamp |                 Date |              String |
|-----------------------|----------------------|---------------------|
| 2017-10-25 12:53:12.0 | 2017-10-25T12:53:12Z | 25-10-2017 12:53:12 |

TIMESTAMPDATE 的格式将取决于您的 NLS_TIMESTAMP_FORMATNLS_DATE_FORMAT 会话参数,但您可以在指定格式模型时直接控制 TO_CHAR 的格式。

【讨论】:

  • 这样的问题已经得到了很好的回答,重复同样的事情没有意义。随意将其标记为重复。
【解决方案2】:

将您的时间戳转换为字符串:

SQL> SELECT TO_CHAR (SYSTIMESTAMP, 'YYYY-MON-DD HH24:MI:SS') AS my_date
  FROM DUAL;

MY_DATE
-----------------------------
2017-OCT-13 00:38:26

【讨论】:

  • 这样的问题已经得到了很好的回答,重复同样的事情没有意义。随意将其标记为重复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
相关资源
最近更新 更多