php
  • mysqli
  • 2016-11-18 2 views 1 likes 
    1

    以下のコードがあります。なんらかの理由で2016年のイベントしかリストされていません.2017年に終了するイベントに入れた瞬間、それは表示されません。PHP/MySQLiコード現在の年のイベントのみを表示し、将来の年を無視するコード

    理由は何ですか?

    $currentdate = date('m-d-Y'); 
    
        $events_call = $eventsdb->query(" 
    SELECT * FROM events WHERE start <= '". $currentdate ."' 
    AND (end >= '". $currentdate ."' OR end = 0) ORDER BY end ASC"); 
    

    私はmm-dd-yyyy形式で書式設定しています。例:11-18-2016

    +0

    'start'と' end'のデータ型は何ですか?それが 'DATE'の場合、そのフォーマットは' MM-DD-YYYY'ではなく、 'YYYY-MM-DD'です。 – simon

    +0

    それはちょうどvarchar(11)データ型です。開始日は11-17-2016で終了日は01-01-2017です。 – KDJ

    +0

    日付に 'VARCHAR'を使用しないと、この場合は文字列比較が失敗します。 'DATE'または' DATETIME'を使用してください – simon

    答えて

    1

    私はmm-dd-yyyy形式で書式設定しています。例:11-18-2016

    PHP、またはMySQLについては、これらの日付は自動的にはわかりませんが、数値ストリングとして解釈されます。したがって、11-17-2016は01-01-2017(11,172,016対01,012,017)よりも大きいです...問題を解決するために比較を行う前にフォーマットをYYYY-MM-DDに変更するか、日付をタイムスタンプなどに変換できます...

    1

    正確に何をしたいですか? 2つの日付の間に結果が欲しいですか?そうならば、同様に、SQLコマンドBETWEENのための見てみましょう:

    How do I query between two dates using MySQL?

    しかし、私はあなたがmm-dd-yyyy形式でのmysqlで日付情報を格納できることと思ういけません。 Mysqlはyyyy-mm-dd形式を受け入れます。あなたのテーブル構造をチェックしてください日付形式ですか?

    関連する問題