blogger

    blogger
  • hot log

  • comment

    twitter

    • 12.10.xC6出来时候碰到"Could not determine encryption mode from page zero",竟果然是BUG!http://www-01.ibm.com/support/docview.wss?rs=630&uid=swg21973408

      2015-12-21 20:15

    • 空间已经转移到新加坡,希望会好一些。

      2015-11-16 14:34

    • 增加新域名liaosnet.cc,与liaosnet.com同指向。

      2015-10-09 15:25

    • 空间迁移到香港。或许速度会快一点。。

      2014-02-13 20:10

    • 解决个问题:NBU配置Storage时的目录在系统分区上,导致备份失败,最终原因是目录在系统分区上时,需要在 This directory can exist on the root file system or system disk. 这个选项前打上勾。

      2012-09-26 22:21

    • More»

    blog sort

    links

    record

    banner

    Informix的时间与数值秒转换

    暗夜星空's Memory from Sep 27 , 2012 at 14:16 PM , under Category:INFORMIX
    sysmaster库中的sysptnhdr表中created字段是表的建立时间,其值是自1970-01-01 00:00:00 开始的秒数。
    若我们需要获取表建立的时间,则需要进行转换,比如 to_date('1970-01-01 00:00:00','%Y-%m-%d %H:%M:%S') + created units second,但尝试执行这个时,会返回错误。

     1263: A field in a datetime or interval value is incorrect or an illegal operation
     specified on datetime field.
    Error in line 1
    Near character position 113

    其中的返回错误表明,interval 的值存在问题,查出created的值为:1,340,483,148,这个原因明了:interval的值不能超过9位,而created的值现在为10位,超出了!!

    那我们该将created的秒数转换成时间呢?需要使interval的值小于10位即可。

    首先,获取到2000-01-01 00:00:00的秒数
    select substr((to_date('2000-01-01 00:00:00','%Y-%m-%d %H:%M:%S') - to_date('1970-01-01 00:00:00','%Y-%m-%d %H:%M:%S')) * 24 * 3600,1,10) from sysmaster:sysdual;
     946684800

    然后,使用 to_date('2000-01-01 00:00:00','%Y-%m-%d %H:%M:%S')  + (created -  946684800) units second 即为created的时间了。

    我们可以用个存储过程来实现这个功能(注:10亿秒约31.7年)。
    CREATE FUNCTION intsec_time(intsec int)
    RETURNING datetime year to second;
        
        RETURN to_date('2000-01-01 00:00:00','%Y-%m-%d %H:%M:%S') + (intsec - 946684800) units second;

    END FUNCTION;

    然后再使用查询时,使用intsec_time可以容易的进行时间转换。
    select first 1 created, intsec_time(created) from sysmaster:sysptnhdr;

        created (expression)        

     1340483148 2012-06-23 20:25:48

    1 row(s) retrieved.

    Page comment lists:

    netsky 2014-11-28 17:55

    @informixer:嗯,这个方法比较实用。

    informixer 2014-11-27 11:17

    dbinfo('UTC_TO_DATETIME',ti.ti_created)

    Post a comment:

    Your email address will not be published. Required fields are marked﹡