[英]How to create a SQL query for the given scenario?
有一个名为user_transaction
的表,其结构如下:
transaction_id mediumint(6) UNSIGNED (PK)
transaction_no varchar(55)
transaction_cc_avenue_no varchar(55)
transaction_card_category varchar(100)
transaction_user_id varchar(32)
transaction_user_name varchar(255)
transaction_user_email_id varchar(255)
transaction_deal_code varchar(10)
transaction_dc_id smallint(4)
transaction_amount float(10,2)
transaction_discount float(10,2)
transaction_total_amount float(10,2)
transaction_data_assign enum('0', '1')
transaction_status enum('success', 'inprocess', 'fail', 'cancelled')
transaction_date bigint(12)
transaction_update_date bigint(12)
transaction_update_user_id varchar(32)
我正在使用transaction_date
和transaction_update_date
字段中的UNIX时间戳值存储日期。 现在我的问题是要从PHP表单中以dd / mm / yyyy say(11/07/2013)格式获取今天的日期。 在获得此日期之后,我只想查找今天(即2013年11月7日)的以下计数:
total count of all the transactions carried out,
total count of all the transactions having transaction_status as 'success',
total count of all the transactions having transaction_status as 'inprocess',
total count of all the transactions having transaction_status as 'fail',
total count of all the transactions having transaction_status as 'cancelled'
两个日期(两个日期的范围,包括两个日期在内)也需要相同的输出。 我是UNIX时间戳记操作的新手。 有人可以在这方面帮助我吗? 提前致谢。
SELECT COUNT(*) `carried out`,
SUM(transaction_status = 'success') `success`,
SUM(transaction_status = 'inprocess') `inprocess`,
SUM(transaction_status = 'fail') `fail`,
SUM(transaction_status = 'cancelled') `cancelled`
FROM tableName
-- WHERE add your conditions here
并且由于您只想从今天的日期获取所有记录,因此假设从transaction_date
您可以将Unix日期转换为日期,例如
WHERE FROM_UNIXTIME(transaction_date) >= CURDATE() AND
FROM_UNIXTIME(transaction_date) < CURDATE() + INTERVAL 1 DAY
要过滤掉今天的交易,您可以使用WHERE date(now())== date(transaction_date)或仅从一个11/07/2013创建2个日期转换为对
11/07/2013 00:00:00 - 11/07/2013 23:59:59
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.