【问题标题】:How to group records by date when date is in UNIX Timestamp format?当日期为 UNIX 时间戳格式时,如何按日期对记录进行分组?
【发布时间】:2013-07-11 11:27:11
【问题描述】:

我从 dd-mm-yyyy 格式的 PHP 表单中得到两个日期。 (比如说 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();
    }

提前致谢。

【问题讨论】:

    标签: php mysql date unix-timestamp


    【解决方案1】:

    使用FROM_UNIXTIME(transaction_date) 将其作为日期类型。 Info

    【讨论】:

    • 我只是觉得你快一点
    【解决方案2】:

    在最后一行查询中进行更改并替换为以下代码:

    $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 convert datetime to Unix timestamp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多