Oracle SQL TO_CHAR 返回不正确的经络指标

Oracle SQL TO_CHAR returning incorrect meridian indicators

我尝试按降序排序。我使用 TO_CHAR 函数从他们的日期中提取时间,12 小时带有子午线指示器。但是,我的结果不是我所期望的 - AM 与我的 PM 混在一起。

这是我的查询:

SELECT TO_CHAR(SAMPLETIME, 'HH:MI:SS AM') AS Time_Checked
ORDER BY Time_Checked DESC;

这是我得到的结果示例:

Time Checked
-------------
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 PM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:56:24 AM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:28 PM
12:51:24 AM
12:51:24 AM
12:51:24 AM
12:51:24 AM
12:51:24 AM
12:51:24 AM

我预计会有重复的时间,因为这是来自对滞后时间进行连续检查的数据库。它给了我等量的 AM 和 PM。我希望样本结果只在下午出现,因为我是在下午做的。

关于为什么会发生这种情况的任何想法?当我改为 24 小时时,它工作正常。

因为您排序的是字符串而不是日期。

SELECT TO_CHAR(SAMPLETIME, 'HH:MI:SS AM') AS Time_Checked
ORDER BY SAMPLETIME DESC;