好吧,我打算在oracle sqldeveloper中把年代轉換為普通的日期時間,我寫了下面的代碼,但它說 "缺少運算式" 我的代碼:
SELECT to_date(CreationDate, 'yyymmdd', 'nls_calendar=persian') EpochDate/24/60/60
from table1
我的table1:
| ID | EpochDate | 100 | 16811048 | 16810904 | 12924715 | 103 |
|---|---|
| 15667117 | 15667117
我不知道什么是錯的!
uj5u.com熱心網友回復:
如果CreationDate是一個Date,EpochDate是一個Varchar,你可以這樣嘗試:
SELECT to_date(to_char(CreationDate, 'yyyymmdd','nls_calendar=persian'),'yyyymmdd')
EpochDate/24/60/60 as newDate
from table1
或者:
select to_date(to_char(CreationDate, 'yyyymmdd','nls_calendar=persian'),'yyyymmdd') >
numtodsinterval(EpochDate,'SECOND') as newDate
from dual
uj5u.com熱心網友回復:
讓我們用一個例子來告訴你如何做
演示資料SQL> 創建 表 c1 ( id number generated always as identity, date_test date) 。
Table創建。
SQL> insert into c1 ( date_test ) values ( sysdate ) 。
1 row created.
SQL> insert into c1 ( date_test ) values ( sysdate-365) 。
1 row 創建。
SQL> insert into c1 ( date_test ) values ( sysdate-4000 ) 。
1 row 創建。
SQL> insert into c1 ( date_test ) values ( sysdate7200 ) 。
1 row created.
SQL> commit 。
Commit完成。
現在,讓我們添加一個名為epoch的列,以及一個小函式,以方便更新該列。
SQL> alter table c1 add epoch number ;
Table altered.
SQL> 創建 或替換函式 date_to_unix_ts( PDate in date ) return number is
l_unix_ts數字。
begin
l_unix_ts := ( PDate - date '1970-01-01' ) * 60 * 60 * 24;
return l_unix_ts;
end;
/
Function創建的
我們用基于時間戳欄位的真實紀元日期來更新列epoch
。SQL> update c1 set epoch=date_to_unix_ts(date_test) ;
4 rows更新。
SQL> select * from c1 ;
id date_test epoch
---------- ---------------------------------------- -----------------
1 20210915 12: 25: 25 16317087252 20200915 12: 25: 25 16001727253 20101003 12: 25: 25 12861087254 20011229 12: 25:26 1009628726SQL> select to_char(to_date('1970-01-01','YYYY-mm-d') numtodsinterval(EPOCH,'SECOND'),'YYYY-MM-DD HH24:MI:SS') from c1 ;
TO_CHAR(TO_DATE('19
-------------------
2021-09-15 12:25:25
2020-09-15 12:25:25
2010-10-03 12:25:25
2001-12-29 12:25:26
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/308119.html
標籤:
上一篇:OracleApex如何在不在會話中的應用程式之間傳遞頁面重定向的專案值
下一篇:在表中找到所有的父或子
