在where子句中仅选择年份和月份

时间:2017-06-08 08:15:52

标签: php mysql select pdo

我的数据库中有此值 101101-2017-06-000 它是列lddap_no的值我想选择年份等于当前年份和当前月份的值我的查询

SELECT lddap_no FROM lddap WHERE YEAR(lddap_no) = '2017' AND MONTH(lddap_no) = '06' ORDER BY sys_id DESC LIMIT 1

我分别使用了YEAR()和MONTH(),但它没有用,即使我有一个条目我也没有结果。

如何正确比较未格式化日期的列值的年份和月份。

UPDATE

已使用WHERE YEAR(substring(lddap_no,7,10)) = '2017' AND MONTH(substring(lddap_no,12,13)) = '06'仍然没有找到结果

尝试使用此

WHERE YEAR(SUBSTRING(CAST(lddap_no AS VARCHAR(100)), 7, 10)) = '2017'  AND MONTH(SUBSTRING(CAST(lddap_no AS VARCHAR(100)), 12, 13)) = '06'

2 个答案:

答案 0 :(得分:1)

这是一个XY问题。这里真正的问题是您以错误的格式存储数据。将日期存储为日期或日期时间,然后您可以使用MySQL日期函数开始查询。

与此同时,因为它是一个varchar,对于一个廉价的黑客,你可以尝试一个LIKE子句:

......WHERE ldap_no LIKE "%-2017-06-%"

可能值得一试。

答案 1 :(得分:0)

也许你可以试试:

SELECT * FROM lddap WHERE lddap_no LIKE '%2017-06%';