2016-08-05 8 views
-1

日付を1列の2つの日付の間で検索したいのですが、日付をy-m-d形式に変換しますが、応答が得られます。1970-01-01、何ができますか?1970-01-01として返された日付を修正するには?

$dToDate = date("Y-m-d", strtotime($aData['to_date']))." 00:00:01"; 

    $dFromDate = date("Y-m-d", strtotime($aData['from_date']))." 23:59:59"; 


    $sAndWhere = "1 = 1"; 
    $sAndWhere .= " AND d.created_at between '".$dToDate.' AND '.$dFromDate."'"; 
    $sAndWhere .= " AND u.mood =".$sMood; 

    $sAndWhere .= " AND d.activated = 1 AND d.deleted=0"; 
    $sSql = "SELECT 
       * 
      FROM 
       diaries d 
      LEFT JOIN 
       users u 
      ON 
       d.id_user = u.id_user 
      WHERE ".$sAndWhere; 
+0

このコードを使用するすべての最初にあなたの日付とチェックが空かないエコー。 –

+0

$ aData ['to_date'])または$ aData ['from_date']が空です。これをチェックしてください。 – phper

+0

はい、私はそれを入れます。 – vid

答えて

0
$dToDate = $dFromDate = ""; 
if(strtotime($aData['to_date']) > 0) 
{ 
    $dToDate = date("Y-m-d", strtotime($aData['to_date']))." 00:00:01"; 
} 

if(strtotime($aData['from_date']) > 0) 
{ 
    $dFromDate = date("Y-m-d", strtotime($aData['from_date']))." 23:59:59"; 
} 

$sAndWhere = "1 = 1"; 
if(($dToDate != "") && ($dFromDate!="")) 
{ 
    $sAndWhere .= " AND d.created_at between '".$dToDate."' AND '".$dFromDate."'"; 
} 
else if($dToDate != "") 
{ 
    $sAndWhere .= " AND d.created_at = '".$dToDate."'"; 
} 
else if($dFromDate != "") 
{ 
    $sAndWhere .= " AND d.created_at = '".$dFromDate."'"; 
} 
$sAndWhere .= " AND u.mood =".$sMood; 

$sAndWhere .= " AND d.activated = 1 AND d.deleted=0"; 
$sSql = "SELECT 
      * 
     FROM 
      diaries d 
     LEFT JOIN 
      users u 
     ON 
      d.id_user = u.id_user 
     WHERE ".$sAndWhere; 

+0

ありがとうございました! :) – vid

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)役職。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – Rizier123

関連する問題