Использование: -
rc = sqlite3_exec(db,"CREATE TABLE IF NOT EXISTS dir (system_name TEXT, modified TEXT);",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
rc = sqlite3_exec(db,"INSERT INTO dir VALUES('New File.txt','2018-11-03 11:35:42'),('Readme.txt','2018-11-01 10:43:21');",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
rc = sqlite3_exec(db,"SELECT * FROM dir;",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
rc = sqlite3_exec(db,"SELECT * FROM dir WHERE modified > '2018-11-02 00:00:00';",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
Результат: -
system_name = New File.txt
modified = 2018-11-03 11:35:42
system_name = Readme.txt
modified = 2018-11-01 10:43:21
system_name = New File.txt
modified = 2018-11-03 11:35:42
Однако, если учесть, что у вас есть одинарные кавычки , обернутые вокруг дат в выводе, то: -
rc = sqlite3_exec(db,"CREATE TABLE IF NOT EXISTS dir (system_name TEXT, modified TEXT);",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
rc = sqlite3_exec(db,"DELETE FROM dir;",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
rc = sqlite3_exec(db,"INSERT INTO dir VALUES('New File.txt','''2018-11-03 11:35:42'''),('Readme.txt','''2018-11-01 10:43:21''');",callback,0,&zErrMsg);
sqlite3_free(zErrMsg); //<<<<<<<<<< ADDED single quotes
rc = sqlite3_exec(db,"SELECT * FROM dir;",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
rc = sqlite3_exec(db,"SELECT * FROM dir WHERE modified > '2018-11-02 00:00:00';",callback,0,&zErrMsg);
sqlite3_free(zErrMsg);
Дает ли ваш результат. В основном потому, что одинарная кавычка принимается во внимание при ее сохранении (по крайней мере, так видно из uotput, который вы показали) как часть значения.
Таким образом, исправление запроса будет использовать: -
sqlite3_exec(db,"SELECT * FROM dir WHERE modified > '''2018-11-02 00:00:00''';",callback,0,0);
Однако, вероятно, было бы лучше не заключать значение в одинарные кавычки.