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'");

2 つの属性名$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'もうまくいくでしょう。

プログラムで 1 日を追加し、次を使用します<

$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 に答える