Sqlite:如何从C绑定和插入日期?

前端之家收集整理的这篇文章主要介绍了Sqlite:如何从C绑定和插入日期?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用C(Visual Studio)和sqlite.如何将日期绑定到参数?

sqlite3_stmt *statement;

const char *sql = 
    "INSERT INTO employees "
        "(full_name,"
        "date_started)" 
    " VALUES "
        "(@full_name,"
        "@date_started)";

sqlite3_prepare_v2(database_,sql,-1,&statement,NULL);

int parameterIndex = sqlite3_bind_parameter_index(statement,"@full_name");
sqlite3_bind_text(statement,parameterIndex,"John Smith",sqlITE_TRANSIENT);

parameterIndex = sqlite3_bind_parameter_index(statement,"@date_started");

// <??? what goes here ???>
// I want to include the local current time,so I want to know:
// 1. what's the best way to get local time in C++
// 2. and what goes here for the date binding

sqlite3_step(statement);

sqlite3_finalize(statement);

注意:我不想使用sql设置当前时间(例如,CURRENT_TIMESTAMP等)

解决方法

它没有诀窍:

const char * sql =
    "INSERT INTO Employees(full_name,data_started) VALUES (?,?)";
time_t time = 0x3DE43B0C;
sqlite3_bind_int64(statement,2,time);

以下是documentation的相关部分:

1.2 Date and Time Datatype

sqlite does not have a storage class set aside for storing dates and/or times. Instead,the built-in Date And Time Functions of sqlite are capable of storing dates and times as TEXT,REAL,or INTEGER values:

  • TEXT as ISO8601 strings (“YYYY-MM-DD HH:MM:SS.SSS”).
  • REAL as Julian day numbers,the number of days since noon in Greenwich on November 24,4714 B.C. according to the proleptic Gregorian calendar.
  • INTEGER as Unix Time,the number of seconds since 1970-01-01 00:00:00 UTC.

Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

猜你在找的Sqlite相关文章