Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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

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
Php Mysql获取记录,其中MONTHNAME();YEAR()等于一个值_Php_Mysql - Fatal编程技术网

Php Mysql获取记录,其中MONTHNAME();YEAR()等于一个值

Php Mysql获取记录,其中MONTHNAME();YEAR()等于一个值,php,mysql,Php,Mysql,我试图从下表中获取所有“项目”id,其中条件为uid='1',月份='8月'和年份='2016' date | uid | project ------------------------------------------- Wed, 01 Aug 2016 | 1 | 11 Tue, 15 Aug 2016 | 2 | 11 Mon, 31 Aug 2016 | 1

我试图从下表中获取所有“项目”id,其中条件为uid='1',月份='8月'和年份='2016'

date               |     uid    |     project
-------------------------------------------
Wed, 01 Aug 2016   |     1      |      11
Tue, 15 Aug 2016   |     2      |      11
Mon, 31 Aug 2016   |     1      |      11
Thu, 05 Sep 2016   |     1      |      12
Sat, 10 Sep 2016   |     2      |      12
Mon, 12 Feb 2017   |     3      |      12
Tue, 31 Feb 2017   |     1      |      13
Wed, 31 Mar 2017   |     2      |      13
Fri, 31 Mar 2017   |     3      |      13
Thu, 31 Mar 2017   |     1      |      14
下面是我使用的查询

SELECT project FROM logs where uid="1" AND MONTHNAME(STR_TO_DATE(date,'%W, %d %M %Y'))="August" AND YEAR(STR_TO_DATE(date,'%W, %d %M %Y'))="2016";

但它也恢复了其他月份的记录。我在这里做错了什么?

我会像使用
一样使用

SELECT project
FROM logs 
WHERE uid = 1 AND 
      date LIKE '% Aug 2016';

不要将日期/时间值存储为字符串。如果你这样做了,不要叫他们“date”,而是叫他们类似“datestr”的名字,以防止出现意外错误。但是如果它是一个字符串,你可以把它当作一个字符串来对待。

我只想用

SELECT project
FROM logs 
WHERE uid = 1 AND 
      date LIKE '% Aug 2016';
SELECT project 
FROM logs 
WHERE uid= 1
AND MONTHNAME(STR_TO_DATE(date,'%W, %d %M %Y'))= 'August' 
AND YEAR(STR_TO_DATE(date,'%W, %d %M %Y'))= 2016
;

不要将日期/时间值存储为字符串。如果你这样做了,不要叫他们“date”,而是叫他们类似“datestr”的名字,以防止出现意外错误。但是如果它是一个字符串,你可以把它当作一个字符串。

<代码>和日期类似“%Aug%”和日期类似“% 2016%”< /代码>保持简单。如果你离这个项目不太远,你应该考虑使用MySQL的内置日期函数。你现在所做的是大量的工作<代码>和日期“%Aug %”和“%1”/<代码>的日期保持简单。如果你离这个项目不太远,你应该考虑使用MySQL的内置日期函数。你现在做的是很多工作,我看不到你的查询和我的查询之间的区别。你能解释一下吗?@Thowzif如果你提到uid和year part作为字符串使用作为整数。谢谢你的跟进。我使用了Gordon Linoff建议的查询。谢谢你的努力。我看不出你的问题和我的有什么区别。你能解释一下吗?@Thowzif如果你提到uid和year part作为字符串使用作为整数。谢谢你的跟进。我使用了Gordon Linoff建议的查询。谢谢你的努力。谢谢你的回答。此查询还返回2017年8月的记录。@Thowzif。它将如何做到这一点?类似于
模式明确地包含了2016。您有不同日期格式的记录吗?谢谢您的查询。我已经弄明白了。这个结果是由一个\“字符产生的。谢谢你的回答。这个查询也会返回2017年8月的记录。@Thowzif…它是怎么做到的?类似于
的模式明确地有2016年。你有不同日期格式的记录吗?谢谢你的查询。我已经找到了。这是一个\”正是这个角色造成了这样的结果。
SELECT project 
FROM logs 
WHERE uid= 1
AND MONTHNAME(STR_TO_DATE(date,'%W, %d %M %Y'))= 'August' 
AND YEAR(STR_TO_DATE(date,'%W, %d %M %Y'))= 2016
;