SQL> with test (day, month, year) as
2 (select 1, 2, 1995 from dual union all
3 select 2, 3, 1998 from dual
4 )
5 select day, month, year,
6 --
7 lpad(day, 2, '0') ||'-'|| lpad(month, 2, '0') || '-'|| year as result
8 from test;
DAY MONTH YEAR RESULT
---------- ---------- ---------- ----------------------------------------------
1 2 1995 01-02-1995
2 3 1998 02-03-1998
SQL>
3条答案
按热度按时间zbdgwd5y1#
如果是Oracle,那么连接零个左填充值可能会完成这项工作(请参见第7行):
9w11ddsr2#
如果希望查询不带TO_DATE和TO_CHAR。让我们尝试下面的查询:
zpqajqem3#
您应该使用
TO_DATE
,因为它正是为此而设计的。但是,作为学术练习,如果您从
DATE '0001-01-01'
开始,然后使用ADD_MONTHS
(对于Oracle,或对于MySQL,TIMESTAMPADD
)表示年和月,并使用加法表示天:在Oracle中:
其中,对于样本数据:
产出:
日|月|年|DT|DT2
-|
1|2|1995|1995-02-01 00:00:00|1995-02-01 00:00:00
2|3|1998|1998-03-02 00:00:00|1998-03-02 00:00:00
5|6|2020|2020-06-05 00:00:00|2020-06-05 00:00:00
fiddle
或MySQL:
以下哪项输出:
日|月|年|日
-|-|
1|2|1995|19950201
2|3|1998年|19980302
5|6|2020年|20200605
fiddle