我的数据库中有此值 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'
答案 0 :(得分:1)
这是一个XY问题。这里真正的问题是您以错误的格式存储数据。将日期存储为日期或日期时间,然后您可以使用MySQL日期函数开始查询。
与此同时,因为它是一个varchar,对于一个廉价的黑客,你可以尝试一个LIKE子句:
......WHERE ldap_no LIKE "%-2017-06-%"
可能值得一试。
答案 1 :(得分:0)
也许你可以试试:
SELECT * FROM lddap WHERE lddap_no LIKE '%2017-06%';