我读了多篇文章,语法没有发现错误,有人可以指出错误吗?
我正在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还是输入错误?
答案 0 :(得分:0)
元值应打勾,并且在string_to_date内不加引号
答案 1 :(得分: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'
,因为您不进行部分搜索(您在任何地方都没有使用%
)。 / p>
答案 2 :(得分:0)
尝试使用DATE_FORMAT()