ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20200417]xdate别名.txt

[20200417]xdate别名.txt

原创 Linux操作系统 作者:lfree 时间:2020-04-20 10:45:58 0 删除 编辑

[20200417]xdate别名.txt

--//工作需要,需要一个1970/1/1 + 微秒转换为时间的命令。
--//1微秒等于一百万分之一秒(10-6秒),oracle dump 输出有这样的时间格式:
PARSING IN CURSOR #139947943262104 len=2282 dep=0 uid=103 oct=3 lid=103 tim=1587138705191190 hv=635489653 ad='133982f160' sqlid='0pv15fhky1mbp'
PARSING IN CURSOR #139947943262104 len=2282 dep=0 uid=103 oct=3 lid=103 tim=1587138705212785 hv=635489653 ad='133982f160' sqlid='0pv15fhky1mbp'
PARSING IN CURSOR #139947943262104 len=2282 dep=0 uid=103 oct=3 lid=103 tim=1587138705234708 hv=635489653 ad='133982f160' sqlid='0pv15fhky1mbp'

# cat /usr/local/bin/xdate
#! /bin/bash
date -d "1970-01-01 00:00:00  UTC  $( echo "scale=6; $1/1000000"  |bc -l) seconds" +"%Y-%m-%d %T.%N"
date -d "@$( echo "scale=6; $1/1000000"  |bc -l)" +"%Y-%m-%d %T.%N"

$ xdate 1587092504567446
2020-04-17 11:01:44.567446000
2020-04-17 11:01:44.567446000

--//第2种格式我不熟悉,也不知道,看别人这样写也是ok的。我了man date文档也没有发现,仅仅存在info文档。
$info date
--//打入斜线查询Epoc
28 Date input formats
*********************

First, a quote:

     Our units of temporal measurement, from seconds on up to months,
     are so complicated, asymmetrical and disjunctive so as to make
     coherent mental reckoning in time all but impossible.  Indeed, had
     some tyrannical god contrived to enslave our minds to time, to
     make it all but impossible for us to escape subjection to sodden
     routines and unpleasant surprises, he could hardly have done
     better than handing down our present system.  It is like a set of
     trapezoidal building blocks, with no vertical or horizontal
     surfaces, like a language in which the simplest thought demands
     ornate constructions, useless particles and lengthy
     circumlocutions.  Unlike the more successful patterns of language
     and science, which enable us to face experience boldly or at least
     level-headedly, our system of temporal calculation silently and
     persistently encourages our terror of time.

     ...  It is as though architects had to measure length in feet,
     width in meters and height in ells; as though basic instruction
     manuals demanded a knowledge of five different languages.  It is
     no wonder then that we often look into our own immediate past or
     future, last Tuesday or a week from Sunday, with feelings of
     helpless confusion.  ...

     -- Robert Grudin, `Time and the Art of Living'.

   This section describes the textual date representations that GNU
programs accept.  These are the strings you, as a user, can supply as
arguments to the various programs.  The C interface (via the `get_date'
function) is not described here.

* Menu:

* General date syntax::            Common rules.
* Calendar date items::            19 Dec 1994.
* Time of day items::              9:20pm.
* Time zone items::                EST, PDT, GMT.
* Day of week items::              Monday and others.
* Relative items in date strings:: next tuesday, 2 years ago.
* Pure numbers in date strings::   19931219, 1440.
* Seconds since the Epoch::        @1078100502.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Specifying time zone rules::     TZ="America/New_York", TZ="UTC0".
* Authors of get_date::            Bellovin, Eggert, Salz, Berets, et al.

--//顺便学习一下如何将man与info文档转换为文本方式 。
--//man文档,例子:
--// man cat | col -b > cat.txt

$ info date -s -o /tmp/date.txt
info: Writing node (coreutils.info.gz)date invocation...
info: Writing node (coreutils.info.gz)Time conversion specifiers...
info: Writing node (coreutils.info.gz)Date conversion specifiers...
info: Writing node (coreutils.info.gz)Literal conversion specifiers...
info: Writing node (coreutils.info.gz)Padding and other flags...
info: Writing node (coreutils.info.gz)Setting the time...
info: Writing node (coreutils.info.gz)Options for date...
info: Writing node (coreutils.info.gz)Examples of date...
info: Done.

$ date -d @1587092504.567446 +"%Y-%m-%d %T.%N"
2020-04-17 11:01:44.567446000

--//最后修改如下:

# cat /usr/local/bin/xdate
#! /bin/bash
# date -d "1970-01-01 00:00:00  UTC  $( echo "scale=6; $1/1000000"  |bc -l) seconds" +"%Y-%m-%d %T.%N"
date -d "@$( echo "scale=6; $1/1000000"  |bc -l)" +"%Y-%m-%d %T.%N"

# chmod 755 /usr/local/bin/xdate

$ xdate 1587138705234708
2020-04-17 23:51:45.234708000

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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969390