Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中的同一位置使用PHP中的两个变量_Php_Mysql - Fatal编程技术网

在MySQL中的同一位置使用PHP中的两个变量

在MySQL中的同一位置使用PHP中的两个变量,php,mysql,Php,Mysql,我正在尝试使用PHP从MySQL服务器提取数据。该信息有一个日期字段,如YYYYMM(fx.201108)。我的问题是,如果我想返回特定年份的上半年或下半年,SQL查询会是什么样子?我已经厌倦了这样的事情,但是lessthan似乎被忽视了: SELECT * FROM `poster` WHERE mdr LIKE '2011%' AND mdr < '%06' 从“海报”中选择*,其中mdr如“2011%”和mdr

我正在尝试使用PHP从MySQL服务器提取数据。该信息有一个日期字段,如YYYYMM(fx.201108)。我的问题是,如果我想返回特定年份的上半年或下半年,SQL查询会是什么样子?我已经厌倦了这样的事情,但是lessthan似乎被忽视了:

SELECT * FROM `poster` WHERE mdr LIKE '2011%' AND mdr < '%06'
从“海报”中选择*,其中mdr如“2011%”和mdr<'%06'
恐怕谷歌对我帮助不大。

试试下面的方法:

SELECT * FROM `poster` WHERE mdr LIKE '2011%' AND MONTH(STR_TO_DATE(mdr, '%Y%m')) < 06
从'poster'中选择*如'2011%'和月份(STR_TO_DATE(mdr,%Y%m'))<06

您可以这样做,但不能使用VARCHAR或TEXT:

SELECT * FROM `poster` WHERE mdr < '201106' AND mdr > '201100'
从“海报”中选择*,其中mdr<'201106'和mdr>'201100'
尝试(假设数据类型为
varchar

参考资料


您只能将
%
\uu
通配符与
LIKE
语句一起使用。
这是可行的,但在字段上使用任何函数都会扼杀任何使用索引的机会,从而减慢速度

SELECT * FROM poster WHERE mdr LIKE '2011%' AND right(mdr,2) > '06'
请参阅:

你可以像穿线一样穿它。所以你不能使用
你到底想要什么<代码>20
11
??存储日期的字段的
数据类型是什么?如果将日期存储为字符串,则对您不利。您应该使用
DATETIME
数据类型。然后您可以简单地使用
来比较日期。您可以在
datetime
数据类型字段+1上应用
STRING
函数,这也将允许MySQL继续在字段
mdr
上使用索引。在这种情况下,您还可以这样做:
从海报中选择*,其中mdr介于'201101'和'201105'之间,我添加了stru-to-date,非常好用,谢谢。当我开始创建自己的数据库时,我肯定会考虑使用哪种数据类型:)好吧,不过这一种似乎更容易与PHP一起使用?以年份为变量。
SELECT * FROM poster WHERE mdr LIKE '2011%' AND right(mdr,2) > '06'