MySQL:获取创建日期字符串比给定日期字符串更新的行

MySQL: Get rows with creation date string newer than given date string

我正在尝试使用以下代码创建准备好的语句:

$statement = $db->prepare("SELECT * FROM myTable WHERE 
    STR_CMP(creationDate, $startingDate) = 1 ORDER BY creationDate DESC ");

我也试过这个:

$statement = $db->prepare("SELECT * FROM myTable WHERE 
    (creationDate > $startingDate) = 1 ORDER BY creationDate DESC ");

但我得到的是空 $statement。我的目标是获取其创建日期比给定日期字符串更新的行。我的 creationDate 列存储为字符串。

我已经记录了我的查询字符串,它看起来像:

SELECT * FROM myTable WHERE (creationDate > 05.02.2015 14:08:31) = 1 ORDER BY creationDate DESC

我做错了什么?

1) 你必须比较日期。

SELECT * FROM myTable WHERE 

DATE_FORMAT(STR_TO_DATE(creationDate, '%d.%m.%Y %H:%i:%s'),'%d.%m.%Y %H:%i:%s')

> '.$startingDate.'  ORDER BY creationDate DESC

小贴士

2) 在数据库中将日期存储为日期而不是字符串

3) 您的日期字符串似乎无效? 为什么不是 YYYYMMDD。

ORDER BY creationDate DESC 可能会产生意想不到的结果

我已经通过在数据库的 phpMyAdmin sql 查询部分尝试查询字符串解决了我的问题。当我像这样构建查询时,我已经意识到:

$statement = $db->prepare("SELECT * FROM myTable WHERE 
    (creationDate > $startingDate) = 1 ORDER BY creationDate DESC ");

变成:

SELECT * FROM myTable WHERE (creationDate > 05.02.2015 14:08:31) = 1 
    ORDER BY creationDate DESC

MySql 给出 05.02.2015 14:08:31

的错误

所以我准备了这样的声明:

$queryString = 'SELECT * FROM arendi_ideas WHERE (creationDate > "'.$startingDate.'") = 1 ORDER BY creationDate DESC';
$this->logger->debug("GetIdeasNewerThan: Query string = $queryString");
$this->statement = $this->db->prepare($queryString);

而且效果很好。