Linux系统下date的使用

7300阅读 0评论2017-12-12 dbwatcher
分类:LINUX

博客文章除注明转载外,均为原创。转载请注明出处。
本文链接地址:http://blog.chinaunix.net/uid-31396856-id-5780967.html

1.Linux date的用法
(1)

UTC  (Universal Time Coordinated,UTC)世界协调时间
CST  (China Standard Time UTC+8:00)中国沿海时间(北京时间)
GMT  (Greenwich Mean Time)格林威治标准时间
(2)设置时间
date -s "01:01:01 2017-12-12" //这样可以设置全部时间

date -s "01:01:01 20171212" //这样可以设置全部时间

date -s "2017-12-12 01:01:01" //这样可以设置全部时间

date -s "20171212 01:01:01" //这样可以设置全部时间



(3)
时间的格式:
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%b : 月份 (Jan..Dec)
%m : 月份 (01..12)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)

date -d today +"%Y-%m-%d %H:%M:%S"
# date -d today +"%Y-%m-%d %H:%M:%S"
2017-12-12 15:10:29

今天表示:date +%Y%m%d 
# date +%Y%m%d
20171212

昨天表示:date +%Y%m%d --date="-1 day" 
# date +%Y%m%d --date="-1 day"
20171211

(4)时间的运算-加减
date +%Y%m%d         //显示现在天年月日
date +%Y%m%d --date="+1 day"  //显示后一天的日期
date +%Y%m%d --date="-1 day"  //显示前一天的日期
date +%Y%m%d --date="-1 month"  //显示上一月的日期
date +%Y%m%d --date="+1 month"  //显示下一月的日期
date +%Y%m%d --date="-1 year"  //显示前一年的日期
date +%Y%m%d --date="+1 year"  //显示下一年的日期

2.时钟相关(hwclock/clock)
 (1)查看硬件时间
   hwclock --show
   clock --show
 (2)设置硬件时间
   hwclock --set --date="12/07/17 10:30:00" (月/日/年 时:分:秒)
   clock --set --date="12/07/0615 10:30:00" (月/日/年 时:分:秒)
 (3)硬件时间和系统时间的同步
  
  硬件时钟与系统时钟同步:
   hwclock --hctosys(hc代表硬件时间,sys代表系统时间)
  或者
   clock --hctosys
  系统时钟和硬件时钟同步:
   hwclock --systohc
  或者
   clock --systohc

3.时间和时间戳
日期: 年-月-日  如: '2017-12-08'     范围从0001-1-1至9999-12-31
时间: 小时数:分钟数:秒数 如:'23:59:59'
时间戳: 年-月-日 小时数:分钟数:秒数(.微妙数) 如: '2017-12-08 23:59:59.59'

4.Linux下时间和时间戳的转化
系统时间精度到s
转换指定日期为Unix时间戳:
date -d '2017-10-01 00:00:00' +%s
Unix时间戳转换为日期时间:
date -d @1506787200 +"%Y-%m-%d %H:%M:%S"
# date -d '2017-10-01 00:00:00' +%s
1506787200
# date -d @1506787200 +"%Y-%m-%d %H:%M:%S"
2017-10-01 00:00:00
# date -d '2017-10-01 00:00:00.123' +%s
1506787200
#date -d "@1506787200" +"%Y%m%d %H:%M:%S"
 20171001 00:00:00
 也可以用awk的时间函数(strftime)
#echo "1506592730" |awk '{print strftime ("%F %T",$0)}'
2017-09-28 17:58:50

4.数据库时间和时间戳的转化
数据库时间精度到微秒
select from_unixtime(1506787200000/1000); 时间戳/1000
select unix_timestamp('2017-10-01 00:00:00')*1000

下面是MySQL中的演示:
mysql> select unix_timestamp('2017-10-01 00:00:00')*1000;
+--------------------------------------------+
| unix_timestamp('2017-10-01 00:00:00')*1000 |
+--------------------------------------------+
|                              1506787200000 |
+--------------------------------------------+

mysql> select from_unixtime(1506787200000/1000);
+-----------------------------------+
| from_unixtime(1506787200000/1000) |
+-----------------------------------+
| 2017-10-01 00:00:00.0000          |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> select from_unixtime(1506787200);
+---------------------------+
| from_unixtime(1506787200) |
+---------------------------+
| 2017-10-01 00:00:00       |
+---------------------------+

5. 数据库日期时间配置
oracle设置默认时间格式:
nls_date_format参数里面设置时间格式:
yyyy-mm-dd hh24:mi:ss' scope=spfile

mysql时间格式:
(root@127.0.0.1:)[(none)]> show variables like '%date%format';
+-----------------+-------------------+
| Variable_name   | Value             |
+-----------------+-------------------+
| date_format     | %Y-%m-%d          |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
---The End

上一篇:enq: TM - contention 等待事件
下一篇:Mycat用户和权限控制管理