我试图用PHP从MySQL服务器提取数据。该信息具有像这样的日期字段YYYYMM(fx。201108)。我的问题是,如果我想返回特定年份的前半部分或后半部分,SQL查询将如何查看?我已经厌倦了这样的事情,但是每种不超过似乎被忽略:使用PHP中的两个变量在MySQL中的相同位置
SELECT * FROM `poster` WHERE mdr LIKE '2011%' AND mdr < '%06'
恐怕谷歌havnt了太多的帮助我。
我试图用PHP从MySQL服务器提取数据。该信息具有像这样的日期字段YYYYMM(fx。201108)。我的问题是,如果我想返回特定年份的前半部分或后半部分,SQL查询将如何查看?我已经厌倦了这样的事情,但是每种不超过似乎被忽略:使用PHP中的两个变量在MySQL中的相同位置
SELECT * FROM `poster` WHERE mdr LIKE '2011%' AND mdr < '%06'
恐怕谷歌havnt了太多的帮助我。
尝试届如下因素:
SELECT * FROM `poster` WHERE mdr LIKE '2011%' AND MONTH(STR_TO_DATE(mdr, '%Y%m')) < 06
-1,mdr是一个字符串字段,不是日期。 – Johan
的确,我添加了str_to_date –
TRY(假设数据类型是varchar
)
SELECT SUBSTRING('YYYYDDMM',FROM 0 FOR 2) AS firstHalf,
SUBSTRING('YYYYDDMM',FROM 2 FOR 2) AS SecondHalf
FROM yourTable
参考文献
您只能使用%
和_
通配符与LIKE
声明。
这会起作用,但是在字段上使用任何函数都会导致任何使用索引的机会,从而减慢速度。
SELECT * FROM poster WHERE mdr LIKE '2011%' AND right(mdr,2) > '06'
参见:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
你线程它像一个字符串。所以你不能使用'<' – Fender
你确切想要什么? '20'和'11'?那么你存储该日期的字段的'datatype'是什么? – diEcho
如果您将日期存储为字符串,那么对您不利。你应该使用'DATETIME'数据类型。然后你可以简单地使用'<' and '>'比较日期。 –