1

dd-mm-yyyy 形式の PHP フォームから 2 つの日付を取得しています。(たとえば、2013 年 1 月 6 日と 2013 年 6 月 30 日) 次のコードを使用して、上記の日付範囲の日付ごとの結果を表示していますが、DB に格納されている日付が UNIX タイムスタンプであるため、うまくいきません。フォーマット( transaction_date bigint(12))。では、日付ごとの結果をどのように表示すればよいですか? この問題の解決を手伝ってくれる人はいますか?

if($form_data['from_date']!='' && $form_data['to_date']!='') {
        $from_time  = explode("/", $form_data['from_date']);
        $to_time    = explode("/", $form_data['to_date']);

        $start_date = mktime( 0,0,0,$from_time[1],$from_time[0],$from_time[2] ) ;
        $end_date   = mktime( 23,59,59,$to_time[1],$to_time[0],$to_time[2] ) ;

        $sql  =" SELECT COUNT(*) `total count`, SUM(transaction_status = 'success') `success`, ";
        $sql .=" SUM(transaction_status = 'inprocess') `inprocess`, SUM(transaction_status = 'fail') `fail`, ";
        $sql .=" SUM(transaction_status = 'cancelled') `cancelled` FROM user_transaction ";
        $sql .=" WHERE  transaction_date >= '".$start_date."' AND transaction_date <=  '".$end_date."' GROUP BY transaction_date ";

        $this->mDb->Query( $sql);

        $queryResult = $this->mDb->FetchArray();
    }

前もって感謝します。

4

2 に答える 2

2

FROM_UNIXTIME(transaction_date)日付型として取得するために使用します。情報

于 2013-07-11T11:35:28.670 に答える
0

クエリの最後の行を変更し、以下のコードに置き換えます。

$sql .=" WHERE  DATE_FORMAT(transaction_date,'%d-%m-%Y') >= '".$start_date."' AND DATE_FORMAT(transaction_date,'%d-%m-%Y') <=  '".$end_date."' GROUP BY FROM_UNIXTIME(transaction_date)";

このリンクは、MySQL が datetime を Unix タイムスタンプに変換するのに役立ちます。

于 2013-07-11T11:36:10.707 に答える