Mysql:比较无法正常工作

时间:2013-02-09 08:00:36

标签: php mysql

我在php中运行了一个mysql查询。

$result = mysql_query("SELECT status,initiated_by,create_timestamp,extension_id,
    product_code,prospect_name,prospect_email1,prospect_phone1,prospect_title,
    prospect_company,prospect_message,track_id  
    FROM prospect_requests 
    WHERE subscriber_id = '$subscriberid' 
      AND create_timestamp >='$start_date' 
      AND create_timestamp <= '$end_date'");

有两个属性名称$start_date$end_date

我的问题是为什么上面的查询没有返回$end_date

的信息

这是一个场景。

我选择了$start_date作为01-02-2013,$end_date作为09-2-2013。

但上述查询并未返回9月2日的详细信息。

请帮帮我。

更新

当我将日期定为10日元时,它将向我返回9 feb的详细信息

表格结构

CREATE TABLE `prospect_requests` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `customer_id` varchar(255) NOT NULL,
  `subscriber_id` varchar(255) NOT NULL,
  `extension_id` varchar(255) DEFAULT NULL,
  `vendor_number` varchar(255) DEFAULT NULL,
  `product_code` varchar(255) DEFAULT NULL,
  `prospect_email1` varchar(255) DEFAULT NULL,
  `prospect_phone1` varchar(255) DEFAULT NULL,
  `prospect_email2` varchar(255) DEFAULT NULL,
  `prospect_phone2` varchar(255) DEFAULT NULL,
  `prospect_title` varchar(255) DEFAULT NULL,
  `prospect_company` varchar(255) DEFAULT NULL,
  `prospect_name` varchar(255) DEFAULT NULL,
  `prospect_message` text,
  `create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_timestamp` datetime DEFAULT NULL,
  `status` int(11) DEFAULT '0',
  `track_id` varchar(255) NOT NULL,
  `initiated_by` varchar(255) DEFAULT NULL,
  `subscriber_email` varchar(255) DEFAULT NULL,
  `vendor_email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=142 DEFAULT CHARSET=latin1;

输入:$ start_time = 2013-02-01

     $end_time  = 2013-02-09

3 个答案:

答案 0 :(得分:1)

条件<= '$end_date'<= '$end_date 00:00:00'基本相同。

如果您需要这一天,您可以这样查询:

... create_timestamp <= '$end_date 23:59:59'

create_timestamp BETWEEN '$start_date' AND '$end_date 23:59:59' 也可以。

<强>替代

以编程方式添加一天并使用<

$end_date = date('Y-m-d', strtotime("$end_date +1 day"));

... create_timestamp < '$end_date'

<强>更新

您还可以先将时间戳转换为日期:

DATE(create_timestamp) BETWEEN '$start_date' AND '$end_date'

答案 1 :(得分:0)

日期格式应为YYYY-MM-DD

此外,您可以使用WHERE create_timestamp BETWEEN '...' AND '...'作为绑定值的更有效条件。

答案 2 :(得分:0)

对于比较日期,您应该在mysql查询中使用BETWEEN运算符,如下面的

$result = mysql_query("SELECT 
status,initiated_by,create_timestamp,extension_id,product_code,prospect_name,
prospect_email1,prospect_phone1,prospect_title,prospect_company,prospect_message,
track_id  from prospect_requests WHERE subscriber_id = '$subscriberid' AND  
create_timestamp BETWEEN '$start_date' AND '$end_date'");

w2school

之间的运营商之间的完整描述

如果仍然无法使用,请使用表格结构更新您的问题

我看到您使用导致问题的timestamp字段类型的更新问题,请参阅以下可能有用的链接Comparing timestamp with date variable (MySQL and PHP)