【问题标题】:how to get day of week from sqlite date and time string?如何从 sqlite 日期和时间字符串中获取星期几?
【发布时间】:2013-05-03 18:06:09
【问题描述】:

我正在使用 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]);

【问题讨论】:

    标签: c++ c sqlite


    【解决方案1】:

    strftime()%w%m 一起使用。

    【讨论】:

    • 我是否需要将 strftime() 封装在我的 sql 命令中,看起来如何?
    • "select strftime('%w', OrderDateTime) from orderTable"
    • 我已经这样做了,但是我的程序在我的回调函数中崩溃了。
    • 我发现 sqlite 不采用 strftime 中定义的 %A 来给出完整的工作日名称。所以看来我必须编写自己的例程来使用 %w 并将其转换为周一至周日。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多