当前位置: 代码迷 >> 其他数据库 >> 请问Sqlite中调用datetime三种方式的区别
  详细解决方案

请问Sqlite中调用datetime三种方式的区别

热度:640   发布时间:2013-02-26 00:00:00.0
请教Sqlite中调用datetime三种方式的区别?
下面是在Sqlite中的调用及结果
SQL code
select datetime(1311761337,'unixepoch','localtime') -- 调用结果:2011-07-27 18:08:57select datetime(1311761337,'unixepoch')             --调用结果:2011-07-27 10:08:57select datetime(1311761337,'unixepoch','utc')       --调用结果:2011-07-27 02:08:57



上述结果中我对datetime(1311761337,'unixepoch','utc') 与datetime(1311761337,'unixepoch')调用理解上有点混淆了,

下面是我用C语言实现的
C/C++ code
time_t timestamp=1311761337;tm *tmUtc,*tmLocal;tmUtc=gmtime(&timestamp); cout<<asctime(tmUtc)<<endl;//结果2011-07-27 10:08:57 对应数据库中datetime(1311761337,'unixepoch')的调用tmLocal=localtime(&timestamp);cout<<asctime(tmLocal)<<endl;//2011-07-27 18:08:57 对应数据库中datetime(1311761337,'unixepoch','localtime')的调用


C语言中的gmtime调用先前认为是与数据库中datetime(1311761337,'unixepoch','utc')调用相对应的,但实际上不是,gmtime调用对应datetime(1311761337,'unixepoch')调用,那么对datetime(1311761337,'unixepoch','utc')调用怎么理解呢?它难道不是应该理解为把本地时间戳转换成UTC时间吗?


------解决方案--------------------------------------------------------
官网有说明的 http://www.sqlite.org/lang_datefunc
英文不好,看的头大...
select datetime(1311761337,'unixepoch','utc') 
查询utc相对于本地的时间,把本地当为0区,而utc为-8区 ,不知道是不是这个意思


------解决方案--------------------------------------------------------
又重新看了下官方的说明,
localtime假定左边的参数是utc时间,转换为当地时区
而utc假定左边的参数是当地时区,转换为utc时间
 "utc" assumes that the string to its left is in the local timezone and adjusts that string to be in UTC.
  相关解决方案