我正在从 Restful 服务中获取 JSON 正文。其中一项数据是Paid_at:1696484073(num)。我需要把它变成一个日期。
我试过:
SELECT TO_timestamp( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( nvl(l_payment_date,0), 'SECOND' )
into l_payment_date_trans
FROM DUAL;
返回 10/05/23,那是不对的
l_payment_date_str := to_char(l_payment_date);
l_payment_date_trans := TO_DATE(to_char(l_payment_date_str), 'YYYY-MM-DD');
没工作
SELECT TO_DATE(to_char(l_payment_date_str), 'YYYY-MM-DD')
into l_payment_date_trans
FROM DUAL;
返回 03/02/15,我认为那是不对的。
如何将该数字(“l_ payment_date”)转换为日期并将该值分配给l_ payment_date_trans?
为什么你认为你得到的值不对?因为你没有看到时间部分?好吧,也许这与您的 client 有关,它当前设置为仅显示日期值。如果您设置正确(如下面的示例所示),您会发现它实际上是正确的。
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> alter session set nls_timestamp_format = 'dd.mm.yyyy hh24:mi:ss.ff6';
Session altered.
SQL> select date '1970-01-01' + (&&your_value / 86400 ) result_date,
2 --
3 timestamp '1970-01-01 00:00:00' + numtodsinterval (&your_value, 'second' ) result_timestamp
4 from dual;
Enter value for your_value: 1696484073
RESULT_DATE RESULT_TIMESTAMP
------------------- --------------------------------------------------
05.10.2023 05:34:33 05.10.2023 05:34:33.000000
SQL>