如何在C ++中使用MySQL的STR_TO_DATE?

时间:2017-07-31 06:04:28

标签: c++ mysql

我的C ++代码中有以下MySQL插入查询:

snprintf(buffer, QUERY_MAX,
    "INSERT INTO players (FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, MONEY,  \
    USERNAME, PASSWORD, GENDER, INCOME_LEVEL, CRIME_LEVEL, DOB) \
    VALUES (\'%s\', \'%s\', \'%s\', \'%s\', %f, \'%s\', \'%s\', \'%s\', \'%s\', \'%s\',   \
    STR_TO_DATE(\'%s\', '%m/%d/%Y')             \
);", /* values */, "10/15/2017");

我收到以下警告:

  

警告C4476:' snprintf' :未知类型的字段字符' m'格式   符

     

警告C4473:' snprintf' :没有为格式传递足够的参数   串

它似乎不喜欢STR_TO_DATE的格式说明符。它似乎让MySQL格式说明符与C ++混淆。我该如何解决这个问题?

我传递给%s的日期变量是我自己的格式' 10/15/2017'。

在缓冲区中,调试时有以下内容:

STR_TO_DATE('10/15/2017', 'm/-858993460/Y')

2 个答案:

答案 0 :(得分:0)

您不能混合使用C和MySQL格式。使用C格式说明符并将参数作为字符串值传递:

STR_TO_DATE(\'%s\', '%s/%s/%s')

另外,你这样做是错误的,因为这是易于注入SQL的代码。请使用带参数的预准备语句。

答案 1 :(得分:0)

使用%%转义格式字符串的MySQL部分中的百分比。

STR_TO_DATE(\'%s\', '%%m/%%d/%%Y')