我有这个问题:我想将 sysdate 转换为字符串,仅在月、日和小时上使用 fillmode。然而,
select to_char(sysdate, 'fmmm/fmdd/yyyy fmhh12:mi:ss am') from dual
给我这样的结果
11/13/2013 9:45:**0** am
虽然它应该是
11/13/2013 9:45:**00** am
有什么想法吗?提前致谢
您不应该使用FM
格式模型,因为FM
正如文档中所写:
FM
- 与其他元素结合使用以直接抑制前导或尾随空白
因此FM
,如果可能的话,使用将使您的最终字符串更短。
您应该FM
从格式模型掩码中删除 ,它会按预期工作:
select to_char(TRUNC(sysdate), 'mm/dd/yyyy hh12:mi:ss am') from dual;
输出:
2013 年 11 月 13 日上午 12:00:00。
阅读 Nicholas Krasnov 的评论后,我改变了答案(谢谢)。
Oracle 文档中有关日期格式模型的更多信息:格式模型
编辑
是的,我提供的代码会返回,例如01-01-2013
. 如果你想有没有前导零的月份和日期,那么你应该这样写:fmDD-MM-YYYY fmHH:MI:SS
.
第一个fm
使前导零被截断。第二个fm
关闭该功能,并且您确实会在日期的时间部分得到前导零,例如:
SELECT TO_CHAR(
TO_DATE('01-01-2013 10:00:00', 'DD-MM-YYYY HH12:MI:SS'),
'fmmm/dd/yyyy fmhh12:mi:ss am')
FROM dual;
输出:
2013 年 1 月 1 日上午 10:00:00。