gpt4 book ai didi

c++ - 如何使用 xdevapi 从 mysql 中获取 DateTime

转载 作者:搜寻专家 更新时间:2023-10-31 02:05:24 24 4
gpt4 key购买 nike

当我选择一个日期时间字段时,它以 6 个字节的形式返回。如何将其转换为 time_point 或 struct tm?

mysqlx::Session session( "mysqlx://root:password@127.0.0.1:33060/catalog" );
auto row = session.sql( "select create_time from information_schema.tables order by 1 LIMIT 1" ).execute().fetchOne();
assert( row[0].getType()==8 );//raw type
assert( row[0].getRawBytes().second==6 );//6 bytes
var bytes = row[0].getRawBytes().first;
//e2 0f 08 0c 0a 32
//2018-08-12 10:50:04

最佳答案

嘿,我只花了 5 个小时想弄清楚同样的事情,解决方案是投影 TIME/DATE/DATETIME 字段作为 UNIX 时间戳 (整数) 在您的 SQL 语句中使用 UNIX_TIMESTAMP() .

然后你可以很容易地得到字段为time_t (并可选择转换为 struct tm )。

#include<time.h>

mysqlx::Session session{"mysqlx://root:password@127.0.0.1:33060/catalog"};
auto row = session.sql("SELECT UNIX_TIMESTAMP(create_time) FROM information_schema.tables ORDER BY 1 LIMIT 1").execute().fetchOne();
time_t creationTime = (int) row[0];
struct tm* creationTimePoint = localtime(creationTime);

希望这对您有所帮助。 -注意

关于c++ - 如何使用 xdevapi 从 mysql 中获取 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com