ORACLE中的日志值转换成time_t

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

为了便于在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\0", pTM);

printf("%s\n", str);

return 1;

}

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

Trackback: http://tb.blog.csdn.net/TrackBack.ASPx?PostId=1477419

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航