【问题标题】:Convert "Thu Sep 22 3:50 2016" to "2016-09-22" in Solaris, without GNU date在 Solaris 中将“Thu Sep 22 3:50 2016”转换为“2016-09-22”,没有 GNU 日期
【发布时间】:2016-09-23 20:01:48
【问题描述】:

有人可以建议一种简单而简短的方法,通过 shell 脚本在 Solaris 中将“Thu Sep 22 3:50 2016”转换为“2016-09-22”吗?

我在 Solaris 上没有可用的 GNU 日期,如下文所述: Convert date String to number on Solaris shell script gives No such file or directory

我需要查询一个sql server db,其中日期以“2016-09-06”格式保存,因此我需要对其进行转换

【问题讨论】:

    标签: date solaris


    【解决方案1】:

    实际上,您确实有可用的 GNU 日期,但无论如何,这是通过脚本实现此目的的一种方法:

    #!/bin/ksh
    a="Thu Sep 22 3:50 2016"
    echo $a | nawk '
    BEGIN {
      m=1
      m2m["Jan"]=m++;
      m2m["Feb"]=m++;
      m2m["Mar"]=m++;
      m2m["Apr"]=m++;
      m2m["May"]=m++;
      m2m["Jun"]=m++;
      m2m["Jul"]=m++;
      m2m["Aug"]=m++;
      m2m["Sep"]=m++;
      m2m["Oct"]=m++;
      m2m["Nov"]=m++;
      m2m["Dec"]=m++;
    }
    {
      printf("%s-%02d-%02d\n",$5,m2m[$2],$3)
    }'
    

    输出:

    2016-09-22
    

    【讨论】:

      【解决方案2】:

      为什么不使用 Oracle 的 sysdate?

      select * from your_table where saved_date >= to_char(sysdate,'yyyy-MM-dd')

      【讨论】:

      • 收到错误:'to_char' 不是可识别的内置函数名。
      • 这是一个 PL/SQL 语句。您能否更新您的原始问题以包含您正在运行的代码?
      • 您是否在 Solaris 上运行 MS SQL Server??
      猜你喜欢
      • 2019-07-02
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      相关资源
      最近更新 更多