2

我有一个在 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 Feburary 的详细信息。

请帮帮我。

更新

当我将日期设置为 2 月 10 日时,它会返回我 2 月 9 日的详细信息

表结构

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
4

3 回答 3

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'
于 2013-02-09T08:33:24.833 回答
0

日期应该是格式YYYY-MM-DD

此外,您可以将WHERE create_timestamp BETWEEN '...' AND '...'其用作限制值的更有效条件。

于 2013-02-09T08:05:06.497 回答
0

对于比较日期,您应该BETWEEN在 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 BETWEEN '$start_date' AND '$end_date'");

请在w2school的操作员之间进行完整的描述

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

我看到您正在使用timestamp导致问题的字段类型的更新问题请参阅以下链接,这可能会有所帮助比较时间戳与日期变量(MySQL 和 PHP)

于 2013-02-09T08:08:26.910 回答