SHELL获得毫秒数


由于从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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值