SQL 如何从日期中提取时间到 HH:MI:SS PM/AM?

Posted

技术标签:

【中文标题】SQL 如何从日期中提取时间到 HH:MI:SS PM/AM?【英文标题】:SQL How do I extract time from a date to HH:MI:SS PM/AM? 【发布时间】:2015-06-25 12:07:27 【问题描述】:

我想在 SQL Oracle 中将日期格式更改为 HH:MI:SS PM/AM。

我想在这种情况下使用它:

to_char(a.dtime,'HH:MI:SS') >= 12:00:00 then to_char(a.dtime,'HH:MI:SS PM') else null end as date

>

但 SQL 不想显示所有 to_char 时间 > 12:00 但它只显示那些有 12:%%:%% 的时间。

它不适用于 to_date。 有什么建议么?提前非常感谢。

【问题讨论】:

【参考方案1】:

您可以使用TO_CHAR( datetime, format ) 格式化DATE 列。格式选项为here。

这将为您提供日期值的时间部分(12 小时制加上 AM/PM):

SELECT TO_CHAR( column_name,'HH:MI:SS AM') 
FROM   your_table

编辑 - 解决更新问题

你可以这样做:

SELECT CASE WHEN TO_NUMBER( TO_CHAR( a.dtime_appl_creation, 'HH24' ) ) >= 12
            THEN TO_CHAR( a.dtime, 'HH:MI:SS PM' )
            END AS "date"
FROM   table_name

【讨论】:

【参考方案2】:
SELECT to_char(sysdate,'dd/MM/yyyy hh:mi:ss am') 
FROM dual

【讨论】:

【参考方案3】:
case 
  when a.dtime_appl_creation-trunc(a.dtime_appl_creation) > 0.5 then 'after noon'
  else 'before noon' 
end

【讨论】:

以上是关于SQL 如何从日期中提取时间到 HH:MI:SS PM/AM?的主要内容,如果未能解决你的问题,请参考以下文章

红移复制时,时间格式为“YYYY-MM-DD HH:MI:SS”的纪元

Oracle中几个关于日期方面的SQL实例

Oracle SQL:从时间戳时区中提取日期和时间

如何从日期字符串中提取年份?

如何在sequelize ORM中使用从时间戳中选择并提取日期到月份和年份?

如何从以下模式中提取 SQL 计数?