【问题标题】:How to use UNIX Timestamp value for today's date in PHP/MYSQL query?如何在 PHP/MYSQL 查询中使用今天日期的 UNIX 时间戳值?
【发布时间】:2014-02-12 10:52:59
【问题描述】:

我想获取交易日期为今天的所有记录,例如(2014 年 2 月 12 日)。因此,为了实现这一点,我尝试了以下 SQL 查询:

SELECT transaction_status, count( * ) AS StatusCount
FROM OCN.user_transaction
WHERE transaction_date = date('Ymd')
GROUP BY transaction_status

但这对我不起作用。任何人都可以在这方面帮助我吗?提前致谢。

【问题讨论】:

  • transaction_date 的列类型是什么?
  • 事务日期如何保存在数据库中?日期或日期时间或时间戳?
  • @Rikesh:数据类型为bigint(12)
  • 假设 UNIX 时间戳,假设 MySQL; select ... where date(now()) = date(from_unixtime(transaction_date)) ...;.

标签: php mysql sql date unix-timestamp


【解决方案1】:

如果数据类型是 BigInt(12),那么这应该适合你:

SELECT
    transaction_status, 
    count( * ) AS StatusCount 
FROM 
    OCN.user_transaction 
WHERE 
    DATE_FORMAT(FROM_UNIXTIME(transaction_date), "%Y-%m-%d") = DATE(NOW()) 
GROUP BY 
    transaction_status

但是使用 BigInt 存储时间戳并不是在 MySQL 中存储日期的最佳方式。您可以根据需要使用 DATE、DATETIME 或 TIMESTAMP。

【讨论】:

    【解决方案2】:

    你会比在 MySQL 中使用 CURDATE 函数更糟糕:

    SELECT 
      transaction_status,
      COUNT(*) AS StatusCount 
    FROM
      OCN.user_transaction 
    WHERE transaction_date = CURDATE()
    GROUP BY transaction_status
    

    如果您还有其他问题,请发表评论。

    【讨论】:

      【解决方案3】:

      您正在比较 2 种不同的日期时间格式,因此将“transaction_date”解析为与输入日期相同的日期时间格式。使用 DATE_FORMAT(date,format) 解决这个问题。

      示例实现:

          SELECT transaction_status, 
               count( * ) AS StatusCount 
          FROM OCN.user_transaction 
         WHERE DATE_FORMAT(transaction_date, "Ymd") = date('Ymd') 
      GROUP BY transaction_status
      

      祝你好运!

      【讨论】:

        【解决方案4】:

        试试这个:

        SELECT 
        transaction_status,
        COUNT(*) AS StatusCount 
        FROM
        OCN.user_transaction 
        WHERE transaction_date =date_format(CURRENT_TIMESTAMP, "%d-%m-%y")
        GROUP BY transaction_status ;
        

        您可以根据需要修改格式。

        【讨论】:

          【解决方案5】:

          当前日期方法返回今天的日期...所以我相信 hd1 提交的帖子应该可以工作。

          选择 交易状态, COUNT(*) AS 状态计数 从 OCN.user_transaction WHERE transaction_date = CURDATE() 按事务状态分组

          【讨论】:

            【解决方案6】:

            如果transaction_date是时间戳类型,并且查询由php创建,试试这个:

            SELECT 
              transaction_status,
              COUNT(*) AS StatusCount 
            FROM
              OCN.user_transaction 
            WHERE transaction_date = <?php time() ?>
            GROUP BY transaction_status 
            

            试试mysql now()函数

            SELECT 
              transaction_status,
              COUNT(*) AS StatusCount 
            FROM
              OCN.user_transaction 
            WHERE transaction_date = now()
            GROUP BY transaction_status 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-02-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多