【问题标题】:Oracle SQl- How to Convert T00:00:00 into AM or PM readable time in Oracle SQLOracle SQl-如何在 Oracle SQL 中将 T00:00:00 转换为 AM 或 PM 可读时间
【发布时间】:2021-03-06 15:47:29
【问题描述】:

我尝试通过以下方式转换:

TO_TIMESTAMP ("T00:00:00", '"T"hh:mi:ss')

显示错误>>

ORA-01861: 文字与格式字符串不匹配 01861. 00000 - “文字与格式字符串不匹配” *原因:输入中的文字必须与输入中的文字长度相同 格式字符串(前导空格除外)。如果 “FX”修饰符已打开,文字必须完全匹配, 没有额外的空格。 *操作:更正格式字符串以匹配文字。

【问题讨论】:

  • 您在寻找哪个结果?

标签: sql string oracle datetime time


【解决方案1】:

您的直接问题是 hh:这代表基于 12 小时的格式(上午/下午),因此它只允许 112 之间的值(0 在12 小时制)。

您也不应该在文字字符串周围使用双引号;但我认为您实际上并没有在代码中这样做,否则您会收到错误invalid identifier

然后:无论如何,Oracle 中没有time 数据类型——只有date(很直观,它包括一个时间部分)和各种风格的timestamps。如果您希望将输入字符串转换为以 AM/PM 格式表示 time 的字符串,那么您可以执行以下操作:

to_char(to_date('T00:00:00', '"T"hh24:mi:ss'), 'hh12:mi:ss am') 

这会将时间字符串转换为date(日期部分在未指定时默认为当前日期),然后以上午/下午格式返回其时间部分格式。这产生:

12:00:00 AM

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多