我有一个非常基本的要求,我之前已经做过,但是现在无法解决。我在数据库中有一个表,该表以以下格式存储时间:
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';
我在这里错过了什么吗?如果有人指出,将不胜感激。
答案 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中的等效日期。
干杯!