Php Mysql获取两个日期之间的表结果
我知道我的问题与其他已经回答的问题类似,但我的问题不同,因为我需要一些替代方案或建议,而不是如何走另一条路 我的问题是:我想得到两个日期之间的值,或者根据用户的需要得到一个日期之间的值 当用户请求一天的数据时。。php查询数据成功。。但问题是请求的数据在两个日期之间Php Mysql获取两个日期之间的表结果,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,我知道我的问题与其他已经回答的问题类似,但我的问题不同,因为我需要一些替代方案或建议,而不是如何走另一条路 我的问题是:我想得到两个日期之间的值,或者根据用户的需要得到一个日期之间的值 当用户请求一天的数据时。。php查询数据成功。。但问题是请求的数据在两个日期之间 $query = $this->db->query("SELECT * FROM `meta_receipt_data` WHERE `meta_transaction_date` >= '$first_da
$query = $this->db->query("SELECT * FROM `meta_receipt_data`
WHERE `meta_transaction_date` >= '$first_date' AND
`meta_transaction_date` <= '$second_date' ");
return $query->result();
$query=$this->db->query(“从“元收据数据”中选择*”
其中'meta\u transaction\u date`>='$first\u date'和
`元交易日期“=“2014年9月13日”和
`meta_transaction_date`MySQL有一个名为Between的内置函数,您可以这样使用:
SELECT * FROM table_name WHERE date_column BETWEEN 'start_date_parameter' AND 'end_time_parameter'
尝试先转换日期,然后使用between
语句:
$query = $this->db->query("SELECT * FROM `meta_receipt_data`
WHERE `meta_transaction_date` BETWEEN
date_format(str_to_date('$first_date', '%d/%m/%Y'), '%Y-%m-%d') AND
date_format(str_to_date('$second_date', '%d/%m/%Y'), '%Y-%m-%d')");
将meta\u transaction\u date
的类型更改为date
,因为它就是这样!在传递日期时也使用标准的'yyyyy-mm-dd'
您的问题可能源于'mm/dd/yyyy'
美国日期格式的字符串顺序,这对于编码来说是非常糟糕的。如果您希望以这种格式显示日期
,请在选择
并最终输出时将其转换
$query = $this->db->query("SELECT * FROM `meta_receipt_data`
WHERE `meta_transaction_date` >= '09/13/2014'
AND `meta_transaction_date` <= '09/19/2014' ");
一句忠告,不要使用像SELECT*
这样的查询,因为它们会降低应用程序的性能。我刚刚在您对自己问题的评论中读到:
我已将类型设置为Varchar
不要这样做。最好使用日期类型存储日期。您可以使用查询:
ALTER TABLE `meta_receipt_data`
MODIFY `meta_transaction_date` DATE NOT NULL;`
好的,这是假设您希望保持列不接受空值。我发现该值前后都有空格,所以我使用$first=trim($first\u date)
问题解决了…关于$first\u date
、$second\u date
和列meta\u transaction\u date
的数据类型是什么?$first\u date
和$second\u date
是字符串,但它们来自数组$first\u date=$date['range\u one'];
和$second\u date=$date=$date['range\u two']
与tometa\u transaction\u date相同
我已将类型设置为Varchar…您是否尝试了between函数?这并没有回答问题。在Mysql控制台上,即使我在php代码中使用实际日期,代码也会工作。但是如果我用变量替换值…我会得到空集…您的代码在sql控制台上工作,但在我的php代码中工作没有什么空的setsorry忘记写答案:PI发现值前后都有空格,所以我使用$first=trim($first_date)
问题解决了..我还将列类型更改为DATE
谢谢..这是真的..Arth..我知道对日期使用这种格式是不明智的,但这些值来自JavaScript日期选择器,所以我有了摆脱额外拥挤的想法,我想用我自己的方式处理日期..但我知道我会按照你的建议使用 日期
虽然不起作用..但我发现该值前后都有空格,所以我使用了$first=trim($first_DATE);
并解决了问题..谢谢BossI使用这个技巧…我想我下一步需要它,但我只是走了很长的路,然后爆炸('/',$first_DATE)
我将每个值分配给关联数组..这是一个很长的booring,但谢谢。。
$query = $this->db->query("SELECT `meta_transaction_date` FROM meta_receipt_data WHERE
meta_transaction_date BETWEEN "
.date( "Y-M-d", ( strtotime($first_date) ) )." AND "
.date( "Y-M-d", ( strtotime($second_date) ) ) );
ALTER TABLE `meta_receipt_data`
MODIFY `meta_transaction_date` DATE NOT NULL;`