Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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介于和之间>;=及<=&引用;给出不同的结果_Php_Mysql - Fatal编程技术网

Php MySQL介于和之间>;=及<=&引用;给出不同的结果

Php MySQL介于和之间>;=及<=&引用;给出不同的结果,php,mysql,Php,Mysql,操作符和使用“>=之间的MySQL有什么区别吗?日期类型有点奇怪 // These 2 are the same BETWEEN '2011-01-01' AND '2011-12-31' BETWEEN '2011-01-01 00:00:00' AND '2011-12-31 00:00:00' 所以它只能匹配到“2011-12-30 23:59:59”,或者换一种方式,在日期字段中它不会匹配到“2011-12-30” 当您搜索“2011-01-01”时 检查列StDt中的值是否在两个值之

操作符和使用“>=之间的MySQL有什么区别吗?日期类型有点奇怪

// These 2 are the same
BETWEEN '2011-01-01' AND '2011-12-31'
BETWEEN '2011-01-01 00:00:00' AND '2011-12-31 00:00:00'
所以它只能匹配到“2011-12-30 23:59:59”,或者换一种方式,在日期字段中它不会匹配到“2011-12-30”

当您搜索“2011-01-01”时 检查列
StDt
中的值是否在两个值之间

AND StDt >= '2011-1-1' AND EndDt <= '2011-12-31'

这将返回相同的结果集。

您可以在mysql上看到更多关于参考的解释

为了在将“介于”与日期或时间值一起使用时获得最佳效果,请使用CAST()将值显式转换为所需的数据类型。示例:如果将DATETIME与两个日期值进行比较,请将日期值转换为DATETIME值。如果在与日期的比较中使用字符串常量(如“2001-1-1”),请将字符串转换为日期


我建议您继续使用=以获得更精确的结果

您能按照运行它们的方式发布这两个WHERE子句吗?(您可以说
和StDt>='2011-1-1'和EndDt'2011-12-31'
;我猜您缺少一个运算符。准确地查看这两个子句将帮助我们了解发生了什么。)如果两个结果集中有一行不同,那么知道这一行的StDt值也会很有帮助。@Jamie,是的,日期……我实际上会取结束日期,加上一天,并确保少于,因此前一天的整个时间都会被完全包括在内……<2012-01-01(与2011-12-3123:59:59相同)如西蒙所述
WHERE `StDt` BETWEEN '2011-01-01' AND ADDDATE('2011-12-31',1)
WHERE `StDt`BETWEEN '2011-01-01 00:00:00' AND '2011-12-31 23:59:59'
WHERE `StDt` >= '2011-01-01' AND `StDt` <= '2011-12-31'
WHERE DATE(`StDt`) BETWEEN DATE('2011-01-01') AND DATE('2011-12-31')
AND StDt BETWEEN '2011-1-1' AND '2011-12-31'
AND StDt >= '2011-1-1' AND EndDt <= '2011-12-31'
AND StDt >= '2011-1-1' AND StDt <= '2011-12-31'