我有一张这样的table
|----------|-----------|-----------|
| year | month | day |
|----------|-----------|-----------|
|0 |1 |1 |
|----------|-----------|-----------|
|2100 |5 |6 |
|----------|-----------|-----------|
|5 |7 |8 |
|----------|-----------|-----------|
我想选择最短的日期。到目前为止我已经用了
SELECT min(TO_DATE(year ||'.'|| month||'.'|| day, 'YYYY.MM.DD'))
FROM date_table;
它应该会回来
01.01.0000 00:00:00
问题是 TO_DATE
不接受等于零的年份。我怎样才能避免这种情况?
我正在使用oraclesql。
2条答案
按热度按时间pbgvytdp1#
你可以用一些表达式和
LPAD
功能如下:注意:oracle不支持0000作为一年。它以ad和bc格式表示。因此0001bc被认为是公元0001ad之前的1年,即0000。所以(0000年=公元前0001年)
nxowjjhe2#
你可以用
order by
限制为一行:这适用于oracle 12c+。在旧版本中: