STR_TO_DATE 在我的 SQL 查询中为空

STR_TO_DATE in MY SQL Query is Null

我已经阅读了多篇文章,发现我的语法没有任何问题,有人可以指出错误吗?

我正在 WordPress 数据库的 PHP MyAdmin 中测试一些查询。我查询的 table 有一个 meta_key 的 "Listing-End-Date" 和 meta_values 的“2018/06/30”。

我的查询如下所示:

SELECT * FROM `table`
WHERE `meta_key` LIKE 'Listing-End-Date'
AND STR_TO_DATE('meta_value', '%Y/%m/%d') > CURDATE()

它 returns 0 个结果。为了测试我的 STR_TO_DATE 格式,我做了一个新查询:

SELECT `meta_key` , STR_TO_DATE( 'meta_value', '%Y/%m/%d' )
FROM 'table'
WHERE `meta_key` LIKE 'Listing-End-Date'

我返回了预期的 1 个结果,但日期为 NULL。是因为我使用的是 PHP 我的管理员还是我打错了什么?

Meta_value应该打勾,不要在string_to_date

里面加引号

您试图将字符串值 'meta_value' 转换为日期,但显然失败了。您可能想从 table meta_key 中引用列 meta_value 而不是:

SELECT * FROM `table`
WHERE meta_key LIKE 'Listing-End-Date'
AND STR_TO_DATE(meta_value, '%Y/%m/%d') > CURDATE()

我删除了反引号,因为这里不需要反引号(除 table 外)。但是,即使您可以使用反引号,您也不应该使用保留关键字命名您的 table。

此外,需要注意的一件事是 meta_key LIKE 'Listening-End-Date' 等价于相等比较 meta_key = 'Listening-End-Date' 因为您不进行部分搜索(您没有在任何地方使用 %) .

尝试使用DATE_FORMAT()

check this page