0

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

我正在 WordPress 数据库上的 PHP MyAdmin 中测试一些查询。我正在查询的表的 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()

它返回 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 My Admin 还是我输入错误?

4

3 回答 3

0

Meta_value 应该打勾,而不是在 string_to_date 内引用

于 2018-06-21T21:57:20.630 回答
0

您试图将字符串值转换'meta_value'为显然失败的日期。您可能想引用meta_value表中的列meta_key

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

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

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

于 2018-06-21T21:59:29.097 回答
0

尝试使用 DATE_FORMAT()

检查这个页面

于 2018-06-21T22:48:41.030 回答