计算时间差

因为做kettle数据抽取,常常要知道执行消耗了多少时间,而自己对shell只是知道一些基础的东西,于是网上查资料,顺便进行下总结:

思路:

1.将时间date转变为时间戳(即从1970-01-01 00:00:00 开始算起的秒数)

2.时间戳之间就可以直接进行运算了

3.运算得到的结果是秒,可以进一步运算除以60去得到分钟,小时,天数等

3.1.也可以将秒转化为date型:$(date +%Y-%m-%d' '%H:%M:%S -d "1970-01-01 UTC $t1 seconds"),注意,这里得到的是从1970年开始算起的日期,要算实际消耗的年月日,对1970-01-01进行运算便可


#!/bin/bash

_time1=$(date +%Y-%m-%d' '%H:%M:%S -d "2015-08-31 01:01:10")
_time2=$(date +%Y-%m-%d' '%H:%M:%S -d "2016-07-30 09:38:30")

echo $_time1
echo $_time2

#得到时间戳
t1=$(date +%s -d "$_time1")
t2=$(date +%s -d "$_time2")

echo t1
echo t2
echo $(($t2-$t1))

#得到时间差
t3=$(($t2-$t1))

#将时间戳转换为常规日期显示
t4=$(date +%Y-%m-%d' '%H:%M:%S -d "1970-01-01 UTC $t3 seconds")
echo $t4

#得到年-月-日,时:分:秒
ydate=$(date +%Y -d "$t4")
mdate=$(date +%m -d "$t4")
ddate=$(date +%d -d "$t4")
htime=$(date +%H -d "$t4")
mtime=$(date +%M -d "$t4")
stime=$(date +%S -d "$t4")

_year=$(($ydate-1970))
_month=$(($mdate-1))
_day=$(($ddate-1))

echo "start time $_time1"
echo "end time $_time2"

#输出最终想要的格式
echo $_year-$_month-$_day' '$(date +%H:%M:%S -d "1970-01-01 UTC $t3 seconds")




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cheng564943797/article/details/52381933
个人分类: linux-shell
上一篇kettle6.1部署
下一篇oracle md5加密
想对作者说点什么? 我来说一句

sqlserver 计算数据库时间差

2017年10月10日 629B 下载

没有更多推荐了,返回首页

关闭
关闭