0

MySQLでクエリを書くとき、例えば

SELECT * FROM `customer` where date BETWEEN '01/20/2012' AND '01/31/2012'

また、2013 年の顧客の詳細も表示されます。

誰でも私を助けてくれますか..

4

6 に答える 6

3
SELECT 
    *
FROM
    customer
WHERE
    STR_TO_DATE(dateField, '%m/%d/%Y') BETWEEN '01/20/2012' AND '01/31/2012';

この方法を試してください。

于 2013-02-02T11:32:22.650 に答える
2

MySQL の日付と時刻関数

SELECT 
    *
FROM
    customer
WHERE
    STR_TO_DATE(dateField, '%m/%d/%Y') BETWEEN STR_TO_DATE('01/20/2012', '%m/%d/%Y') AND STR_TO_DATE('01/31/2012', '%m/%d/%Y');
于 2013-02-02T09:27:18.107 に答える
1
  1. 次のように、データ型をまたは単純に変更dateDATETIMEますDATE

    UPDATE `customer`
        SET `date` = STR_TO_DATE( `date`, '%m/%d/%Y' );
    
  2. 更新後、次のALTERように使用します。

    ALTER TABLE `customer`
        CHANGE COLUMN `date` `date` DATE NOT NULL;
    
  3. その後、次のような選択クエリを使用します。

    SELECT *
    FROM `customer`
    WHERE `date` BETWEEN '2012-01-20' AND '2012-01-31';
    

データ型を適切に変更する理由の背後にある理由は、ここで説明されています: When to use VARCHARand DATE/DATETIME

日付と時刻に関連するその他のデータ型についてDATE、 、DATETIME、およびTIMESTAMPを参照してください。

于 2013-02-02T09:43:36.313 に答える
1

dateフィールドタイプがDATE;であると仮定します。

SELECT * FROM `customer` WHERE `date` BETWEEN '2012-01-20' AND '2012-01-31'

マニュアルから;

DATE 型は、日付部分があり時刻部分がない値に使用されます。MySQL は DATE 値を「YYYY-MM-DD」形式で取得して表示します。

参照: http://dev.mysql.com/doc/refman/5.5/en/datetime.html

アップデート

ただし、日付を として保存するのはお勧めvarcharできません。クエリは次のようになります。

SELECT * FROM `customer` WHERE `date` REGEXP '^2012-01-(2[0-9]|[0-3][0-9])$'

参照: http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp


ただし、可能であれば、フィールド タイプを から に正確に変更する必要がありVARCHARますDATE

于 2013-02-02T09:30:27.807 に答える
-1
SELECT * FROM `customer` where date BETWEEN '2012/01/20' AND '2012/31/01'

phpmyadmin がアップグレードされたため、すぐに実行されます

于 2013-02-02T12:42:57.503 に答える