由於從mongodb往出來匯出資料需要條件
目前time存的是毫秒數,所以得從shell獲得毫秒數
首先要說的是date命令的 +%s參數
網上搜了一下,很多人以訛傳訛,date +%s就是毫秒!
錯了,大錯特錯了,因為man裡是這麼說的
%s seconds since 1970-01-01 00:00:00 UTC
所以說,它的輸出是從1970年1月1日的00:00:00開始,到目前的秒,並不是毫秒
# date -d "2014-04-10 00:00:00" +%s
1397059200
所以要取出毫秒就要將其x1000才能得到
1397059200000
然後又做了一個實驗
在oracle,sqlplus中獲得毫秒數
sys@TESTM> set numwidth 30 //不設定的話sqlplus會用科學技術發輸出結果
sys@TESTM> SELECT TO_NUMBER(TO_DATE('2014-04-10 00:00:00', 'YYYY-MM-DD HH24:MI:SS') - TO_DATE('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 as TIME FROM DUAL;
TIME
------------------------------
1397088000000
如上的sql大概意思是用to_date計算出1970年1月1日到目前時間的天數,然後乘以24小時獲得小時,*60*60獲得到秒,最後*1000才能或的毫秒
但是oracle中獲得的毫秒數和shell中獲得的又不一樣!
回頭再仔細看man中date 命令%s參數的解釋,最後的三個字母,沒錯UTC,是英國時間!
英國佬的時間比北京時間慢8小時,因此有了
1397059200000+8x60x60x1000 = 1397088000000
或者如下獲得:
# date -d "2014-04-10 08:00:00" +%s
1397088000 x 1000
= 1397088000000
################################################
迷途小營運隨筆
轉載請註明出處
作者:john