我正在使用 sqlite datetime 命令来获取、设置和操作我的日期和时间字符串。我首先在 const char* 中构造 sql 命令,然后使用 sqlite3_exec 执行命令,同时使用回调函数从(select from)命令中获取结果(如果有)。
orderDataBaseRc = sqlite3_exec(orderDataBase, pSQL[i], callback, 0, &zErrMsg);
现在我想从我的日期和时间字符串中知道星期几(mo-su)和月份(jan-dec)。
我如何在 sqlite 中做到这一点?文档说我可以从文档中获得更明智的信息,并且很难找到示例。
让我举一些我正在使用的 sql 命令的例子:
"create table orderTable (OrderId integer primary key asc, CustomerId integer, OrderValue, OrderDescription, OrderDateTime DATE, OrderDueDateTime DATE)"
"create trigger insert_orderTable_OrderDate after insert on orderTable begin update orderTable set OrderDateTime = datetime('now') where rowid = new.rowid; end;"
"update orderTable set OrderDueDateTime = datetime('" << iOrderDateTime << "', '+1 day') where OrderId = " << orderId
所以现在我需要能够知道我的日期时间字符串的星期几和月份。
根据下面的建议,我构建了以下语句并使用 sqlite3_exec 启动:
"select strftime('%A', OrderDateTime) FROM orderTable where OrderId = " << orderId;
然后在我的回调函数中,以下代码(azColName[i] 似乎返回了 sql 语句的副本:
char* columnName;
for(int i=0; i<argc; i++)
{
columnName = azColName[i];
string dayOfWeek;
if(strcmp(columnName, "strftime('%A', OrderDateTime)")==0)
{
dayOfWeek = string(argv[i]);
}
...
}
但它崩溃了
dayOfWeek = string(argv[i]);