我想在select语句中检索日期和月份值前面没有前导零的日期。如果我执行以下查询
select to_char(sysdate, 'dd.mm.yyyy') from dual;
我将在21.03.2014获得结果。此外,如果今天是,例如,2014年3月7日,我将得到07.03.2014。我怎样才能摆脱这些领先的零?
答案 0 :(得分:40)
select to_char(sysdate,'DD.MM.YY') -- Without Fill Mode
, to_char(sysdate-20,'fmDD.fmMM.YY') -- With Fill Mode, 20 days ago
from dual;
返回
21.03.14 | 1.3.14
FM Fill模式。
在TO_CHAR函数的日期时间格式元素中,此修饰符会抑制后续字符元素(例如MONTH)中的空白,并在日期格式模型中抑制后续数字元素(例如MI)的前导零。如果没有FM,则字符元素的结果始终用空白填充到固定长度,并且总是为数字元素返回前导零。使用FM来抑制空白填充,返回值的长度可能会有所不同。
答案 1 :(得分:2)
试试这个:
select to_char(to_date('20-oct-2000'),'fmmm/dd/fmrr') from dual
上述查询将从Oracle中的日期和月份值中删除前导零。
答案 2 :(得分:0)
这远非优雅,但它有效:
select to_number(to_char(sysdate,'dd')) || '.' || to_number(to_char(sysdate,'mm')) || '.' || to_number(to_char(sysdate,'yyyy')) from dual
基本上,您可以将日期的每个部分转换为数字