2011-02-02 9 views
0

タイムスタンプのためのmysqlフォーマットではなく、別のアプリケーションで有用な日付フォーマットが設定されたカラムがあります。以下のようになります:sql - 奇妙なタイムスタンプのタイムフレーム

2010.01.28 12:00(「時刻」列)mysqlタイムスタンプの代わりに2010-01-28 12:00:00(「updatetime」列)。

私は2つの期間の間、私はこれを実行します通常のMySQLのタイムスタンプの日付の特定の検索を実行する必要があり

SELECT * FROM table WHERE updatetime BETWEEN '$dateStart' and '$dateEnd' 

が、これはそれがあるとしてフォーマット「時間」の欄では動作しません。 。私は、そのアプリケーションの日付形式を必要とするなどのように書式設定された列を保つことを好むだろう誰もが 2010.01.28 12:00形式で2つのtimeperiodsを検索するMYSQLの方法を知っていますか? PHPスクリプトから実行すると、

答えて

4

あなたは、PHPで同じ形式で時間をフォーマットするか、またはMySQLでは

WHERE updatetime BETWEEN 
     date_format('$datestart','%Y.%m.%d %H:%s') 
    AND date_format('$dateend','%Y.%m.%d %H:%s') 
+0

+1 php-varsの入力形式について考えるとき、忘れてしまったaboutly completly –

2

あなたは、変換するために、この

SELECT * FROM table WHERE STR_TO_DATE(updatetime, "%d.%m.%Y %h:%i") 
BETWEEN '$dateStart' and '$dateEnd' 

ような何かをしようとする場合があります$ dateStartと$ dateEndの値がSQL日付との比較のために正しい形式になっている場合

+1

通常はフィールドの列の周りに関数を入れてINDEXの使用を防ぎません。 – RichardTheKiwi

+0

@cyberwiki:trueまた、テーブルに多くのデータがある場合は、それに対しても助言をします。しかし、再び私は、タイムスタンプまたはネイティブの日付形式で日付を保存し、別の方法で必要な場合にのみ再フォーマットします –