当前位置:首页 > 网络编程 > 数据库 > Oracle > ORACLE中的日志值转换成time_t

ORACLE中的日志值转换成time_t

点击次数:34 次 发布日期:2008-11-22 17:15:33 作者:源代码网
源代码网推荐

为了便于在C语言的代码中处理ORACLE的时间,于是在SELECT的时候直接把日期转换成1970年以来的秒数:
 
SELECT (sysdate - to_date("1970-01-01", "yyyy-mm-dd"))*24*60*60 FROM dual

 

结果发现这个时间比C语言中的time_t值少了8小时,因此得到正确的time_t值应该这样写:
SELECT (sysdate - to_date("1970-01-01", "yyyy-mm-dd"))*24*60*60 + 60*60*8 FROM dual

测试代码如下:
=============================================
SELECT (SYSDATE-to_date("1970-01-01", "yyyy-mm-dd"))*24*60*60,SYSDATE FROM dual;
----------------------------------------------------------------
1168279687       2007-1-8 18:08:07

//c代码
#include <stdio.h>
#include <time.h>

int main()
{
    time_t t = 1168279687UL;
    struct tm* pTM = localtime(&t);
    char str[20];
    strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", pTM);
    printf("%s ", str);
    return 1;
}

//输出:2007-01-09 02:08:07

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华