linux date命令高级用法

在做linux服务器的运维的时候,我们经常会写一些脚本,在脚本中经常会碰到定义时间变量,比如当前时间三天前,三天后,每月1号,每月月末,上月第一天,上月最后一天,下月第一天,下月最后一天等等。我在此总结一下,免得日后写脚本又需要到处去找:

三天前:date +%Y%m%d -d "3 days ago"

一天前:date +%Y%m%d -d "1 days ago"

三天后:date +%Y%m%d -d "3 days"

上月最后一天:date --date="$(date +%Y-%m-%d) - $(date +%d )  days " +'%Y-%m-%d'
(或date -d "$(date +%Y-%m-%d) - $(date +%d )  days " +'%Y%m%d')

上月倒数第二天:date --date="$(date +%Y-%m-%d) - $(date +%d )  days  -1 days " +'%Y-%m-%d'

上月倒数第三天:date --date="$(date +%Y-%m-%d) - $(date +%d )  days  -1 days - 1 days" +'%Y-%m-%d'

当年第一天和最后一天:select trunc(sysdate,'YYYY'),add_months(trunc(sysdate,'YYYY'),12)-1 from dual t

更复杂的可参考:

1)http://521cto.blog.51cto.com/950229/935642/

2)http://longzxr.blog.sohu.com/208705910.html

另:在oracle中我们有时做一些报表统计时候,也需要使用时间函数,并且做成变量的形式,不用每次查询的时候都去手动修改时间。

如:

3天前:to_char(sysdate-3,'yyyy-mm-dd')

上月26号:to_char(last_day(add_months(sysdate,-2))+26,'yyyy-mm-dd')

本月25号:to_char(last_day(add_months(sysdate,-1))+25,'yyyy-mm-dd')

上月1号:to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd')

上月最后一天:to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd'),或select trunc(last_day(add_months(sysdate,-1))) from dual;

注意:在sql语句中如果日期的格式为yyyy-mm-dd格式的时候,在between date1 and date2 日期的值使用的是to_date时,date2是不被包含在内的;日期的值使用的是to_char时,date2是被包含的!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23502881/viewspace-765513/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23502881/viewspace-765513/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值