Oracle 查询从 Julian 值转换为 Date with Time
Oracle query for Convert from Julian value to Date with Time
我必须随时间从 Julian 值转换为常规日期。
Select to_char(to_date(2455198, 'J'), 'DD-MM-YYYY HH:mm:ss') from dual;
此查询有效,结果为 01-01-2010 12:00:00
Select to_char(to_date(2455197.75001, 'J'), 'DD-MM-YYYY HH:mm:ss') from dual;
上述查询无效并出现此错误:
ORA:01830: date format picture ends before converting entire input string
Julian 值:2455197.75001
等效日期值是:1-January-2010 06:00:01
您不能将分数与 Julian 值一起使用。作为 docs state:
Julian day; the number of days since January 1, 4712 BC. Number
specified with J must be integers.
正如@Chris 所说,J 需要一个整数,因此您可以使用 floor
或 trunc
来获取它,并将小数部分用作部分天数(并添加另一半一天,正如@Chris 在评论中指出的那样,占 Julian days starting at noon):
Select to_char(
to_date(floor(2455197.75001), 'J')
+ mod(2455197.75001, 1)
+ 0.5,
'DD-MM-YYYY HH24:mi:ss')
from dual;
得到:
01-01-2010 06:00:01
请注意,我将 HH
更改为 HH24
,第二个 mm
更改为 mi
分钟。
我必须随时间从 Julian 值转换为常规日期。
Select to_char(to_date(2455198, 'J'), 'DD-MM-YYYY HH:mm:ss') from dual;
此查询有效,结果为 01-01-2010 12:00:00
Select to_char(to_date(2455197.75001, 'J'), 'DD-MM-YYYY HH:mm:ss') from dual;
上述查询无效并出现此错误:
ORA:01830: date format picture ends before converting entire input string
Julian 值:2455197.75001
等效日期值是:1-January-2010 06:00:01
您不能将分数与 Julian 值一起使用。作为 docs state:
Julian day; the number of days since January 1, 4712 BC. Number specified with J must be integers.
正如@Chris 所说,J 需要一个整数,因此您可以使用 floor
或 trunc
来获取它,并将小数部分用作部分天数(并添加另一半一天,正如@Chris 在评论中指出的那样,占 Julian days starting at noon):
Select to_char(
to_date(floor(2455197.75001), 'J')
+ mod(2455197.75001, 1)
+ 0.5,
'DD-MM-YYYY HH24:mi:ss')
from dual;
得到:
01-01-2010 06:00:01
请注意,我将 HH
更改为 HH24
,第二个 mm
更改为 mi
分钟。