Php 从订单表中提取当前周的记录

Php 从订单表中提取当前周的记录,php,mysql,codeigniter,datetime,Php,Mysql,Codeigniter,Datetime,我有一张有以下信息的桌子 Id | orderNumber | orderDate | customerId orderDate是一个MySQL日期时间字段,在写入记录时将当前日期、月份、年份和时间插入数据库 所以我的问题是,我将如何提取本周某一天的订单列表。我的目标是使用google charts API为“本周销售”制作一张图表,上面写着: var data = google.visualization.arrayToDataTable([ [

我有一张有以下信息的桌子

Id | orderNumber | orderDate | customerId
orderDate
是一个MySQL日期时间字段,在写入记录时将当前日期、月份、年份和时间插入数据库

所以我的问题是,我将如何提取本周某一天的订单列表。我的目标是使用google charts API为“本周销售”制作一张图表,上面写着:

 var data = google.visualization.arrayToDataTable([
                      ['Day', 'Sales'],
                      ['Mon',  1],
                      ['Tue',  0],
                      ['Wed',  4],
                      ['Thurs',  3],
                      ['Fri',  0],
                    ]);

让我们完全按照您的要求来做:

SELECT
    WEEKDAY(`datetime_field`) AS `week_day`,
    COUNT(*) AS `sale_count`
FROM `orders`
WHERE YEARWEEK(`datetime_field`) = YEARWEEK(NOW())
GROUP BY `week_day`
ORDER BY `week_day` ASC;
这将返回一组记录,其中包含
week\u day
sale\u count
。如果使用本地日期时间,请使用
NOW()
;如果按GMT播放,请使用
UTC\u TIMESTAMP()

请记住,我不知道您的数据库名称或字段名称。你需要把这些填上

工作示例:

CREATE TABLE `orders` (
  `OrderID` int(11) NOT NULL AUTO_INCREMENT,
  `OrderDate` datetime NOT NULL,
  `OrderValue` decimal(7,2) unsigned NOT NULL,
  PRIMARY KEY (`OrderID`)
);

INSERT INTO `orders` VALUES ('1', '2012-10-29 14:02:19', '100.00');
INSERT INTO `orders` VALUES ('2', '2012-10-30 14:02:19', '123.00');
INSERT INTO `orders` VALUES ('3', '2012-10-31 14:02:19', '103.00');
INSERT INTO `orders` VALUES ('4', '2012-11-01 14:02:19', '232.00');
INSERT INTO `orders` VALUES ('5', '2012-11-02 14:02:19', '321.00');
INSERT INTO `orders` VALUES ('6', '2012-11-03 14:02:19', '154.00');
INSERT INTO `orders` VALUES ('7', '2012-11-04 14:02:19', '112.00');
INSERT INTO `orders` VALUES ('8', '2012-10-29 14:02:19', '100.00');

SELECT
    WEEKDAY(`OrderDate`) AS `week_day`,
    COUNT(*) AS `sales_count`,
    SUM(`OrderValue`) AS `sales_value`
FROM `orders`
WHERE YEARWEEK(`OrderDate`) = YEARWEEK(NOW())
GROUP BY `week_day`
ORDER BY `week_day` ASC;
这是创建表的SQL,本周每天添加1个订单,但周一添加2个订单。以及获取报告的查询


下面是

让我们做你想做的事情:

SELECT
    WEEKDAY(`datetime_field`) AS `week_day`,
    COUNT(*) AS `sale_count`
FROM `orders`
WHERE YEARWEEK(`datetime_field`) = YEARWEEK(NOW())
GROUP BY `week_day`
ORDER BY `week_day` ASC;
这将返回一组记录,其中包含
week\u day
sale\u count
。如果使用本地日期时间,请使用
NOW()
;如果按GMT播放,请使用
UTC\u TIMESTAMP()

请记住,我不知道您的数据库名称或字段名称。你需要把这些填上

工作示例:

CREATE TABLE `orders` (
  `OrderID` int(11) NOT NULL AUTO_INCREMENT,
  `OrderDate` datetime NOT NULL,
  `OrderValue` decimal(7,2) unsigned NOT NULL,
  PRIMARY KEY (`OrderID`)
);

INSERT INTO `orders` VALUES ('1', '2012-10-29 14:02:19', '100.00');
INSERT INTO `orders` VALUES ('2', '2012-10-30 14:02:19', '123.00');
INSERT INTO `orders` VALUES ('3', '2012-10-31 14:02:19', '103.00');
INSERT INTO `orders` VALUES ('4', '2012-11-01 14:02:19', '232.00');
INSERT INTO `orders` VALUES ('5', '2012-11-02 14:02:19', '321.00');
INSERT INTO `orders` VALUES ('6', '2012-11-03 14:02:19', '154.00');
INSERT INTO `orders` VALUES ('7', '2012-11-04 14:02:19', '112.00');
INSERT INTO `orders` VALUES ('8', '2012-10-29 14:02:19', '100.00');

SELECT
    WEEKDAY(`OrderDate`) AS `week_day`,
    COUNT(*) AS `sales_count`,
    SUM(`OrderValue`) AS `sales_value`
FROM `orders`
WHERE YEARWEEK(`OrderDate`) = YEARWEEK(NOW())
GROUP BY `week_day`
ORDER BY `week_day` ASC;
这是创建表的SQL,本周每天添加1个订单,但周一添加2个订单。以及获取报告的查询


这里是

好的,这样就可以像你说的那样拉动本周:从
订单
中选择*其中YEARWEEK(
date\u字段
)=YEARWEEK(NOW());就在本周的星期一,我该怎么办。我想运行7个单独的查询,因此我有7个单独的订单,如:$mondayOrders,$tuesdayOrders等。这样我可以说周一有3个订单,周二有5个订单,周三没有订单,等等@DanielWhite请先尝试查询。它在内部进行分组。不需要7个查询。就一个。它使用分组方式。在设置正确的表名和列名而不是日期字段后测试它(它最多返回7行)。很抱歉,这对我不起作用。当我使用你的第一个建议时,它确实有效。第二个建议没有返回任何记录,我试着将订单日期改为今天左右的每一天,但它什么也不做。@DanielWhite我在一个有日期的表上进行了本地测试,结果很有效。可以将DDL粘贴到此处(显示创建表)吗?我想查看您的表列并更改代码。并确保您在MySQL客户端(如WorkBench或Navicat)中进行测试。。。不是用PHP。。。或者也可以将PHP代码粘贴到此处,以确保您的操作正确。mysql fetch part.ok这样就可以像你说的那样拉取这个星期:选择*FROM
orders
WHERE YEARWEEK(
date\u字段
)=YEARWEEK(NOW());就在本周的星期一,我该怎么办。我想运行7个单独的查询,因此我有7个单独的订单,如:$mondayOrders,$tuesdayOrders等。这样我可以说周一有3个订单,周二有5个订单,周三没有订单,等等@DanielWhite请先尝试查询。它在内部进行分组。不需要7个查询。就一个。它使用分组方式。在设置正确的表名和列名而不是日期字段后测试它(它最多返回7行)。很抱歉,这对我不起作用。当我使用你的第一个建议时,它确实有效。第二个建议没有返回任何记录,我试着将订单日期改为今天左右的每一天,但它什么也不做。@DanielWhite我在一个有日期的表上进行了本地测试,结果很有效。可以将DDL粘贴到此处(显示创建表)吗?我想查看您的表列并更改代码。并确保您在MySQL客户端(如WorkBench或Navicat)中进行测试。。。不是用PHP。。。或者也可以将PHP代码粘贴到此处,以确保您的操作正确。mysql获取部分。