日期时间的 AM/PM 转换

Posted

技术标签:

【中文标题】日期时间的 AM/PM 转换【英文标题】:AM/PM Conversion For Date Time 【发布时间】:2019-08-31 06:22:12 【问题描述】:

我之前有一个非常基本的要求,但现在无法解决。我在数据库中有一个表,它按以下格式存储进出时间:

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';

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

【问题讨论】:

您的两个示例具有完全相同的格式。你要的不是格式转换,你要加12小时(0.5天)。 是的,正是@William Robertson。感谢您的通知。 【参考方案1】:

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

您可以尝试以下方法来实现您想要的:

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 ....

此查询只会将中午之前的日期转换为下午的等效日期。

干杯!!

【讨论】:

太棒了!谢谢。你能具体说明一下这实际上是如何工作的吗CASE WHEN TRUNC(IN_TIME) + (12/24) > IN_TIME 这会将 IN_TIME 转换为一天的开始时间,添加 12/24 将使这个时间成为一天的中午 12 点。现在条件会根据它检查这个时间是在中午之前还是中午之后,如果在中午之前,只需添加12小时,使其成为PM。

以上是关于日期时间的 AM/PM 转换的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 将 varchar (dd/mm/yyyy hh.mm AM/PM) 转换为日期时间

如何从 PHP 中的日期时间获取 AM/PM [重复]

.net 格式的日期转换“dd/mm/yyyy HH:mm:ss AM/PM”

将字符串解析为日期时间,同时在熊猫中考虑 AM/PM

考虑 AM/PM 计算 Java 中的日期/时间差

如何以 12 小时 AM/PM 格式显示 JavaScript 日期时间?