簡體   English   中英

如何使用 xdevapi 從 mysql 獲取日期時間

[英]How to fetch DateTime from mysql using xdevapi

當我選擇一個 dateTime 字段時,它會以 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 個小時來找出同樣的事情,解決方案是使用UNIX_TIMESTAMP()TIME / DATE / DATETIME字段投影為 SQL 語句中的 UNIX 時間戳(整數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);

希望這可以幫助。 -介意

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM