Php 在where子句中仅选择年和月
我的数据库中有此值101101-2017-06-000 它是列Php 在where子句中仅选择年和月,php,mysql,select,pdo,Php,Mysql,Select,Pdo,我的数据库中有此值101101-2017-06-000 它是列lddap\u no的值,我想选择年份等于当前年份且当前月份的值,我的查询是 从lddap中选择lddap\u编号,其中年份(lddap\u编号)='2017'和月份(lddap\u编号)='06'按系统id描述限额1订购 我分别使用了YEAR()和MONTH(),但不起作用,即使我有一个条目,也没有结果 如何从未设置日期格式的列值正确比较年和月 更新 使用其中年份(子字符串(lddap_编号,7,10))=“2017”和月份(子字符
lddap\u no
的值,我想选择年份等于当前年份且当前月份的值,我的查询是
从lddap中选择lddap\u编号,其中年份(lddap\u编号)='2017'和月份(lddap\u编号)='06'按系统id描述限额1订购
我分别使用了YEAR()和MONTH(),但不起作用,即使我有一个条目,也没有结果
如何从未设置日期格式的列值正确比较年和月
更新
使用其中年份(子字符串(lddap_编号,7,10))=“2017”和月份(子字符串(lddap_编号,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'
也许你可以试试:
SELECT * FROM lddap WHERE lddap_no LIKE '%2017-06%';
这是一个XY问题。这里真正的问题是您以错误的格式存储数据。将日期存储为日期或日期时间,然后可以使用MySQL日期函数开始查询 同时,由于它是一个varchar,对于一个廉价的黑客,您可以尝试一个类似的条款:
…其中ldap\u不喜欢“%-2017-06-%”
可能值得一试。mysql是我正在使用的,但我也想知道在sql中它们是相同的。使用子字符串提取年份和月份仅用于提取日期的年份值。您的值不是日期或日期时间值,因此函数MONTH和year将不起作用。可能重复