在做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/