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