2014-02-12 87 views
1

我想获取所有transaction_date今天下降的记录,例如(2014年2月12日)。所以为了达到这个目的,我尝试了下面的SQL查询:如何在PHP/MYSQL查询中使用当今日期的UNIX时间戳值?

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

但它不适用于我。任何人都可以在这方面帮助我吗?提前致谢。

+1

什么是'transaction_date'的列类型? – Rikesh

+0

如何在db中保存交易日期?日期或日期时间或时间戳? –

+0

@Rikesh:数据类型为bigint(12) – PHPLover

回答

-2

如果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 
1

你会做不如使用CURDATE功能在MySQL中:

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

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

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。

1

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

示例实现:

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

祝你好运!

1

试试这个:

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

,你想,你可以修改的格式。

1

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

选择 transaction_status, COUNT(*)AS StatusCount FROM OCN.user_transaction WHERE TRANSACTION_DATE = CURDATE() GROUP BY transaction_status

相关问题