【问题标题】:Print C Format specifiers in a string independently独立打印字符串中的 C 格式说明符
【发布时间】:2026-01-11 22:15:01
【问题描述】:

我的 Mysql 服务器中有一个“时间”字段,并且想查询数据库以在我的 C 程序中获取该字段,如下所示:

select * from tbl where str_to_date(time, '%M %d %Y %H:%i:%s') > given_date

现在的问题是在我的查询字符串中打印格式说明符。如何在查询字符串中打印 %d、%i 和 %s?

【问题讨论】:

  • 你能详细说明是什么问题吗?
  • @Piotr S. 当我使用 sprintf 在字符串中打印查询时,它假定我想在输入 %d 时打印一个整数,但我想在查询中准确打印“%d”。

标签: mysql c time format-specifiers


【解决方案1】:

如果您想在格式化字符串中使用%,而不是将其用作格式说明符,请改用%%

char buffer[1024] = {};

char query_string[] = { 
      "select * from tbl where str_to_date(time, '%%M %%d %%Y %%H:%%i:%%s') > '%s'"
};

char given_date[] = { "03 4 2014 14:55:21" };

sprintf(buffer, query_string, given_date);

printf(buffer);

输出:

select * from tbl where str_to_date(time, '%M %d %Y %H:%i:%s') > '03 4 2014 14:55:21'

【讨论】: