首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将时间戳转换为MYSQL_TIME

将时间戳转换为MYSQL_TIME
EN

Stack Overflow用户
提问于 2018-08-23 02:51:41
回答 1查看 353关注 0票数 2

我想用C库把unix时间戳插入到MySQL中。

根据MySQL doc的说法,我应该使用MYSQL_TIME结构,如下所示:

代码语言:javascript
复制
MYSQL_TIME  ts;

ts.year= 2002;
ts.month= 02;
ts.day= 03;

ts.hour= 10;
ts.minute= 45;
ts.second= 20;

将包含时间戳的整数值转换为此结构的正确方法是什么?

除了对数字进行纯粹的解析之外,还有其他解决方案吗?

这是我的目标:

代码语言:javascript
复制
std::time_t t = 1534963754;
MYSQL_TIME mysql_time = convert_to_MYSQL_TIME(t);
EN

回答 1

Stack Overflow用户

发布于 2018-08-23 03:12:01

我的方法是使用localtime(),它以秒为单位获取计时器值并填充tm结构。使用tm structure填充MYSQL_TIME结构。

tm结构的定义如下

代码语言:javascript
复制
struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */   
};

您的convert_to_MYSQL_TIME函数将如下所示。

代码语言:javascript
复制
 MYSQL_TIME  convert_to_MYSQL_TIME(time_t t)
    {
       struct tm * timeinfo;
       MYSQL_TIME sqlTime;
      
       timeinfo = localtime (&t);
       sqlTime.year = timeinfo.tm_year+1900; // struct tm stores year as years since 1900
       sqlTime.month = timeinfo.tm_mon+1; // struct tm stores month as months since January (0-11)
       sqlTime.day = timeinfo.tm_mday;
       sqlTime.hour = timeinfo.tm_hour;
       sqlTime.minute = timeinfo.tm_min;
       sqlTime.second = timeinfo.tm_sec;
    
      return sqlTime;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51973389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档