Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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/58.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 无法在两个日期之间找到正确的记录_Php_Mysql_Sql_Date - Fatal编程技术网

Php 无法在两个日期之间找到正确的记录

Php 无法在两个日期之间找到正确的记录,php,mysql,sql,date,Php,Mysql,Sql,Date,我正在尝试使用=和='15/04/2015'查找到日期之间的记录 和日期格式(创建日期,'%d/%m/%Y')这样做是错误的。不要将日期转换为字符串。将字符串intput转换为日期 改变 AND DATE_FORMAT(created_date, '%d/%m/%Y' ) >= '15/04/2015' 到 或者使用默认的日期格式 SELECT * FROM tma_38 WHERE city LIKE '%%' AND created_date >= '2015-04-15'

我正在尝试使用
=
='15/04/2015'查找到日期之间的记录

和日期格式(创建日期,'%d/%m/%Y')这样做是错误的。不要将日期转换为字符串。将字符串intput转换为日期

改变

AND DATE_FORMAT(created_date, '%d/%m/%Y' ) >= '15/04/2015' 

或者使用默认的日期格式

SELECT *
FROM tma_38
WHERE city LIKE '%%'
AND created_date >= '2015-04-15'
AND created_date < '2015-04-22'
ORDER BY created_date ASC
LIMIT 0 , 10
选择*
来自tma_38
像“%”这样的城市在哪里
创建日期>='2015-04-15'
创建日期<'2015-04-22'
按创建日期ASC排序的订单
限制0,10

我选择了
2015-04.22
而不是
21
,因为你也存储了时间部分。

你做得不对。不要将日期转换为字符串。将字符串intput转换为日期

改变

AND DATE_FORMAT(created_date, '%d/%m/%Y' ) >= '15/04/2015' 

或者使用默认的日期格式

SELECT *
FROM tma_38
WHERE city LIKE '%%'
AND created_date >= '2015-04-15'
AND created_date < '2015-04-22'
ORDER BY created_date ASC
LIMIT 0 , 10
选择*
来自tma_38
像“%”这样的城市在哪里
创建日期>='2015-04-15'
创建日期<'2015-04-22'
按创建日期ASC排序的订单
限制0,10

我选择了
2015-04.22
而不是
21
,因为你也存储了时间部分。

你做得不对。不要将日期转换为字符串。将字符串intput转换为日期

改变

AND DATE_FORMAT(created_date, '%d/%m/%Y' ) >= '15/04/2015' 

或者使用默认的日期格式

SELECT *
FROM tma_38
WHERE city LIKE '%%'
AND created_date >= '2015-04-15'
AND created_date < '2015-04-22'
ORDER BY created_date ASC
LIMIT 0 , 10
选择*
来自tma_38
像“%”这样的城市在哪里
创建日期>='2015-04-15'
创建日期<'2015-04-22'
按创建日期ASC排序的订单
限制0,10

我选择了
2015-04.22
而不是
21
,因为你也存储了时间部分。

你做得不对。不要将日期转换为字符串。将字符串intput转换为日期

改变

AND DATE_FORMAT(created_date, '%d/%m/%Y' ) >= '15/04/2015' 

或者使用默认的日期格式

SELECT *
FROM tma_38
WHERE city LIKE '%%'
AND created_date >= '2015-04-15'
AND created_date < '2015-04-22'
ORDER BY created_date ASC
LIMIT 0 , 10
选择*
来自tma_38
像“%”这样的城市在哪里
创建日期>='2015-04-15'
创建日期<'2015-04-22'
按创建日期ASC排序的订单
限制0,10

我选择了
2015-04.22
而不是
21
,因为您还存储了时间部分。

使用sql语句

created_date between $filter["company_date_from"] and $filter["company_date_to"]

像这样使用sql语句

created_date between $filter["company_date_from"] and $filter["company_date_to"]

像这样使用sql语句

created_date between $filter["company_date_from"] and $filter["company_date_to"]

像这样使用sql语句

created_date between $filter["company_date_from"] and $filter["company_date_to"]

更改并设置过滤器的日期格式。试试-

AND created_date <= '".date('Y-m-d 00:00:00', strtorime(str_replace('/', '-', $filter['company_date_to'])))."'"

更改并设置过滤器的日期格式。试试-

AND created_date <= '".date('Y-m-d 00:00:00', strtorime(str_replace('/', '-', $filter['company_date_to'])))."'"

更改并设置过滤器的日期格式。试试-

AND created_date <= '".date('Y-m-d 00:00:00', strtorime(str_replace('/', '-', $filter['company_date_to'])))."'"

更改并设置过滤器的日期格式。试试-

AND created_date <= '".date('Y-m-d 00:00:00', strtorime(str_replace('/', '-', $filter['company_date_to'])))."'"

这不起作用的原因是,用字符串格式的日期不能正常工作

字符串比较从开头开始,因此像
10/04/2010
这样的数字将被视为大于
04/04/2015
,这显然是不正确的。使用该格式存储日期的部分原因是因为
yyyy-mm-dd
格式可防止类似的错误字符串比较

此外,您的表设计可以发挥您的优势,因为该列存储为
时间戳
,MySQL已经设计了几种用于这些类型的表

要修复查询,您需要将这些值视为它们所属的
timestamp
类型,并且与MySQL中的其他类型一样,您可以对它们使用比较运算符。因此,要检查某个范围之间的日期,可以执行以下两种操作之一:

WHERE myDate >= startDate AND myDate <= endDate
---
WHERE myDate BETWEEN startDate AND endDate

其中myDate>=startDate和myDate这不起作用的原因是,用字符串格式的日期不能正常工作

字符串比较从开头开始,因此像
10/04/2010
这样的数字将被视为大于
04/04/2015
,这显然是不正确的。使用该格式存储日期的部分原因是因为
yyyy-mm-dd
格式可防止类似的错误字符串比较

此外,您的表设计可以发挥您的优势,因为该列存储为
时间戳
,MySQL已经设计了几种用于这些类型的表

要修复查询,您需要将这些值视为它们所属的
timestamp
类型,并且与MySQL中的其他类型一样,您可以对它们使用比较运算符。因此,要检查某个范围之间的日期,可以执行以下两种操作之一:

WHERE myDate >= startDate AND myDate <= endDate
---
WHERE myDate BETWEEN startDate AND endDate

其中myDate>=startDate和myDate这不起作用的原因是,用字符串格式的日期不能正常工作

字符串比较从开头开始,因此像
10/04/2010
这样的数字将被视为大于
04/04/2015
,这显然是不正确的。使用该格式存储日期的部分原因是因为
yyyy-mm-dd
格式可防止类似的错误字符串比较

此外,您的表设计可以发挥您的优势,因为该列存储为
时间戳
,MySQL已经设计了几种用于这些类型的表

要修复查询,您需要将这些值视为它们所属的
timestamp
类型,并且与MySQL中的其他类型一样,您可以对它们使用比较运算符。因此,要检查某个范围之间的日期,可以执行以下两种操作之一:

WHERE myDate >= startDate AND myDate <= endDate
---
WHERE myDate BETWEEN startDate AND endDate

其中myDate>=startDate和myDate这不起作用的原因是,用字符串格式的日期不能正常工作

字符串比较从开头开始,因此像
10/04/2010
这样的数字将被视为大于
04/04/2015
,这显然是不正确的。使用该格式存储日期的部分原因是因为
yyyy-mm-dd
格式可防止类似的错误字符串比较

此外,您的表设计可以发挥您的优势,因为该列存储为
时间戳
,MySQL已经设计了几种用于这些类型的表

要修复查询,您需要将这些值视为它们所属的
timestamp
类型,并且与MySQL中的其他类型一样,您可以对它们使用比较运算符。因此,要检查某个范围之间的日期,可以执行以下两种操作之一: