2011-06-26 45 views
3

私は請求書の種類のフォームの提出を持っており、すべての投稿に日付がありますので、mysqlデータベースにvarchaの日付フィールドを作成してtime.Time形式は '2011-06-26'のようになります。私はデータベースからの日付に基づいて範囲を選択する必要があります。私は以下のオプションを試しましたが、空白のページだけが表示され、何のエラーも表示されません。PHP mysqlの日付範囲を選択

私はデータベースに日付を保存するためのいくつかの特別なテクニックに従うべきでしょうか。私はPHPとMYSQLの開発に慣れていないので、それについていくつか説明してください。

SELECT * FROM table_name 
WHERE 'date' 
BETWEEN UNIX_TIMESTAMP('2011-06-02') AND UNIX_TIMESTAMP('2011-06-25') 




SELECT * FROM my_table 
WHERE 'date' 
BETWEEN CAST('2011-06-02' AS DATE) AND CAST('2011-06-25' AS DATE)"; 

これは私が

$result=mysql_query($query); 
    while($row=mysql_fetch_array($result)){ 
     echo $row['tax']."<br>"; 
    } 

はありがとうございデータを抽出するために使用するものです。

+1

MySQLは実際には「日付」タイプなので、日付を格納するのにVARCHARを使う必要はありません。 –

+0

@matthewh 私はそれも試みましたが、まだ私の結果ページは空です。 – Learner

答えて

8

あなたの日付を格納するDATETIMEタイプを使用する場合のトリックは簡単です DATETIMEあなたは、日付とタイムスタンプを保存することができますただし、日付のみが指定されている場合は、タイムスタンプmpは00:00:00として保存されます

私はあなたに簡単な例を示します。

mysql> CREATE TABLE test_table(
     id INT UNSIGNED AUTO_INCREMENT, 
     test_date DATETIME, 
     PRIMARY KEY (id)); 

mysql> INSERT INTO test_table(test_date) 
     VALUES('2011-06-26'), ('2011-05-14'), ('2011-05-02'); 

mysql> SELECT * FROM test_table; 
+----+---------------------+ 
| id | test_date   | 
+----+---------------------+ 
| 1 | 2011-06-26 00:00:00 | 
+----+---------------------+ 
| 2 | 2011-05-14 00:00:00 | 
+----+---------------------+ 
| 3 | 2011-05-02 00:00:00 | 
+----+---------------------+ 

mysql> SELECT * FROM test_table WHERE test_date 
     BETWEEN '2011-05-01' AND '2011-05-31'; 
+----+---------------------+ 
| id | test_date   | 
+----+---------------------+ 
| 2 | 2011-05-14 00:00:00 | 
+----+---------------------+ 
| 3 | 2011-05-02 00:00:00 | 
+----+---------------------+ 

これだけです。

+0

Thanx buddy.私は試しましたが、PHPの結果はまだ空です。これはデータを取得する私のコードです。 $ query = "SELECT * FROM my_table 2011-06-02と2011-06-25の間の日付です。 $結果= mysql_query($クエリ); while($ row = mysql_fetch_array($ result)){ $ data = $ row ["tax"]; echo $ data; } – Learner

+1

あなたは引用符の間に日付を入れますか?私はPHPでそれを試しています。 – dave

+0

Thanx buddyええ、それは引用符であった。今はうまくいきます。 – Learner

1

日付列がTIMESTAMPまたはDATETIME型である場合、クエリは次のようになります。

SELECT * FROM table_name 
WHERE 'date' 
BETWEEN '2011-06-02' AND '2011-06-25' 

編集:カラムはVARCHARた申し訳ありませんが表示されませんでした - あなたはにDATETIME型に変更してください物事をより簡単にする。

+0

私はあなたのソリューションbuddy.Butを試みましたが、私は結果として空白のページを取得しています。これは私がDATETIMEに変更した後、私の日付データがデータベースにどのように現れるかです。 > 2011年6月22日00:00:00 – Learner

1
  1. 列の名前 - または
  2. なしまたはバッククォートの日付がvarchar型である場合 - もMY_TABLE CAST BETWEENキャスト(DATEとしてdate) ( '2011-06-02から鋳造日 SELECT *を必要とします「 '日付など)AND CAST(' DATE AS 2011年6月25' 日);。
関連する問題