日期时间的AM / PM转换

时间:2019-08-31 06:22:12

标签: sql oracle oracle10g

我有一个非常基本的要求,我之前已经做过,但是现在无法解决。我在数据库中有一个表,该表以以下格式存储时间:

8/18/2019 8:00:00 AM

所以我想要将以上内容转换为以下格式:

8/18/2019 8:00:00 PM

这里没有什么复杂的,只是要从AM转换为PM。我尝试了类似的方法,但没有得到确切的结果:

SELECT TO_DATE(TO_CHAR(M.IN_TIME, 'MM/DD/YYYY HH:MI:SS'), 'MM/DD/YYYY HH12:MI:SS PM') IN_TIME FROM Table m
WHERE M.DATE = '31-AUG-2019';

我在这里错过了什么吗?如果有人指出,将不胜感激。

1 个答案:

答案 0 :(得分:4)

首先,日期以内部格式存储,因此您无法使用自己的操作来更改日期。在数据库中看到的是将日期转换为字符串。(人类可读的格式)

您可以尝试以下方法来实现所需的目标:

SELECT CASE WHEN TRUNC(IN_TIME) + (12/24) > IN_TIME THEN
IN_TIME + (12/24) 
ELSE IN_TIME END
 AS IN_TIME_CONVERTED
FROM TABLE M
WHERE ....

此查询将仅将中午之前的日期转换为PM中的等效日期。

干杯!