我的SQL查询中的STR_TO_DATE为空

时间:2018-06-21 21:25:20

标签: mysql str-to-date

我读了多篇文章,语法没有发现错误,有人可以指出错误吗?

我正在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还是输入错误?

3 个答案:

答案 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()

check this page