在數據庫裡將毫秒轉換成date格局的辦法。本站提示廣大學習愛好者:(在數據庫裡將毫秒轉換成date格局的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是在數據庫裡將毫秒轉換成date格局的辦法正文
在開辟進程中,我們常常會將日期時光的毫秒數寄存到數據庫,然則它對應的時光看起來就非常不便利,我們可使用一些函數將毫秒轉換成date格局。
1、 在MySQL中,有內置的函數from_unixtime()來做響應的轉換,應用以下:
mysql> select from_unixtime(1, '%Y-%m-%d %H:%i:%S');
+---------------------------------------+
| from_unixtime(1, '%Y-%m-%d %H:%i:%S') |
+---------------------------------------+
| 1970-01-01 08:00:01 |
+---------------------------------------+
1 row in set (0.00 sec)
函數from_unixtime中的參數單元是秒,因為我們在+08:00時區,一切終究顯示的成果是1970-01-01 08:00:01。
2、在Oracle中,因為沒有響應的內置函數,我們只能自界說一個函數來完成轉換。
SQL> create or replace function long2date (param in long) return varchar2 as
v_text varchar2(64);
2 begin
3 select to_char(to_date('1970-01-01', 'YYYY-MM-DD')+(param/(24*60*60*1000)+
8/24-1/86400),'YYYY-MM-DD HH24:MI:SS')
4 into v_text from dual;
5 return v_text;
6 end long2date;
7 /
函數已創立。
SQL> select long2date(1000) from dual;
LONG2DATE(1000)
--------------------------------------------------------------------------------------
1970-01-01 08:00:00
SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') char_sysdate, long2date(
(sysdate - 8/24 - to_date('1970-01-01','YYYY-MM-DD')) * 86400000) long2date from dual;
CHAR_SYSDATE LONG2DATE
------------------- --------------------
2013-01-07 14:53:18 2013-01-07 14:53:17
1、long2date()函數裡的參數單元是毫秒。
2、加上8/24,是由於我們在+08:00時區,所以要加上8小時。
3、減去1/86400,是由於能夠會遭到閏秒的影響,可以依據現實須要停止調劑。在本例中沒有需要減去1/86400。
4、應用相似的辦法,我們可以將日期轉換成long型的毫秒數。
SQL> col current_milli format 999999999999999;
SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') current_date, (sysdate -
to_date('1970-01-01', 'YYYY-MM-DD'))* 86400000 current_milli from dual;
CURRENT_DATE CURRENT_MILLI
------------------- ----------------
2013-01-07 15:09:18 1357571358000