SHELL獲得毫秒數

來源:互聯網
上載者:User

由於從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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.