Tue Sep 13 09:56:58 CST 2016
获取特定以特定格式(date + ‘format’,注意格式的大小写表示了不同格式)
-bash-4.1$ date +'%Y-%m-%d'
2016-09-13
-bash-4.1$ date +'%Y%m%d%H'
2016091309
获取昨天的日期(其中表示格式的”+’%Y-%m-%d’ “可在-d前或后面)
-bash-4.1$ date -d 'yesterday' +'%Y-%m-%d'
2016-09-12
-bash-4.1$ date -d 'today -1 day' +'%Y-%m-%d'
2016-09-12
获取当前时间的前一个小时
-bash-4.1$ date -d 'today -1 hour' +'%Y%m%d%H'
2016091309
-bash-4.1$ date +%Y-%m-%d\ \%H:00:00 -d '-1 hours'
2016-09-13 09:00:00
获取指定日期前一天(例如经常在调度脚本中获取传入日期,然后再取前几天)
-bash-4.1$ date -d '20160909 -1 day' +'%Y%m%d'
20160908
将日期转换为时间戳
-bash-4.1$ date -d "2016-09-09 04:00:00" +%s
1473364800
将时间戳转换回日期
-bash-4.1$ date -d @1473364800
Fri Sep 9 04:00:00 CST 2016
将时间戳转换为日期,并按特定格式
-bash-4.1$ date -d @1473364800 +'%Y%m%d%H'
2016090904
将含有yyyy-MM-dd转为yyyyMMdd,可以直接使用sed替换
-bash-4.1$ echo "2016-09-09" | sed 's/-//g'
20160909
在脚本中可以使用(注意需要``符号)
date=`echo "2016-09-09" | sed 's/-//g'`
linux
中
用
shell
获取昨天、明天或多天前的
日期
:
在
Linux
中
对man date -d 参数说的比较模糊,以下举例进一步说明:
# -d, --date=STRING display time described by STRING, not `now’
[root@Gman root]# date -d next-day +%Y%m%d #明天
日期
20091024
[root
Linux
下
Shell
日期
的
格式
,你知道几种?
不管是哪种语言,
日期
/时间都是一个非常重要的值。比如我们保存日志的时候,往往是某个前缀再加上当前时间,这样日志文件名称就可以做到唯一。
在
Shell
环境里,我们获取时间的命令是date,但date出来的时间
日期
格式
、内容可能不是我们所想要的,所以我们可能需要对它进行一些
格式
化输出。
常用的时间域如下:
% Y 年(例如:1970,2018等)
% m 月(01..12)
% d 一个月的第几天(01..31)
% H 小时(00..23)
% M 分(00.
date -d yesterday '+%Y%m%d' 以
yyyymm
dd
格式
显示昨天
日期
date -d today '+%Y%m%d' 以
yyyymm
dd
格式
显示当天
日期
date -d tomarrow '+%Y%m%d' 以
yyyymm
dd
格式
显示明天
日期
法1:from_unixtime+ unix_timestamp/这个试了没成功
–20171205转成2017-12-05
select from_unixtime(unix_timestamp(‘20171205’,‘
yyyymm
dd’),‘yyyy-mm-dd’) from dual;
–2017-12-05转成20171205
select from_unixtime(unix_timestamp(‘2017-12-05’,‘yyyy-mm-dd’),‘
yyyymm
dd’) from dual;