這是我的條件:
你們自己換
WHERE m_id = 4 and integral_type=1 and del_flag=0
表結構和數據
/* Navicat Premium Data Transfer Source Server : Source Server Type : MySQL Source Server Version : 50562 Source Host : Source Schema : home_future_dev Target Server Type : MySQL Target Server Version : 50562 File Encoding : 65001 Date: 02/09/2020 23:02:43 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for home_integral_log -- ---------------------------- DROP TABLE IF EXISTS `home_integral_log`; CREATE TABLE `home_integral_log` ( `integral_id` bigint(22) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵', `m_id` bigint(22) NOT NULL COMMENT '會員id', `m_no` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '會員編號', `integral_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '積分類型:1-簽到,2-訂單 ,3-其他', `settlement_type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '結算類型1-支入 2-支出', `integral_value` int(7) NOT NULL DEFAULT 0 COMMENT '積分數額', `directions` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '說明', `create_time` datetime NOT NULL COMMENT '創建時間', `order_no` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '訂單編號', `del_flag` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '刪除標識0-正常,1-刪除', PRIMARY KEY (`integral_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '積分記錄表' ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of home_integral_log -- ---------------------------- INSERT INTO `home_integral_log` VALUES (1, 4, '457848301915963392', '1', '1', 10, '簽到發放', '2020-07-31 18:23:27', NULL, 0); INSERT INTO `home_integral_log` VALUES (12, 4, '457406012030681088', '1', '1', 10, '簽到發放', '2020-09-01 21:18:55', NULL, 0); INSERT INTO `home_integral_log` VALUES (13, 4, '457406012030681088', '1', '1', 10, '簽到發放', '2020-09-02 21:18:55', NULL, 0); INSERT INTO `home_integral_log` VALUES (14, 4, '457406012030681088', '1', '1', 10, '簽到發放', '2020-08-30 21:18:55', NULL, 0); SET FOREIGN_KEY_CHECKS = 1;
sql語句 可直接測試
SELECT count( 1 ) as days FROM ( SELECT date_sub( a.create_time, INTERVAL 1 DAY ) signDate, ( @i := DATE_ADD( @i, INTERVAL - 1 DAY ) ) today FROM ( SELECT create_time FROM home_integral_log WHERE m_id = 4 and integral_type=1 and del_flag=0 ORDER BY create_time DESC ) a INNER JOIN ( SELECT @i := max( create_time ) AS signMax FROM home_integral_log WHERE m_id = 4 and integral_type=1 and del_flag=0 AND ( TO_DAYS( create_time ) = TO_DAYS( curdate()) OR TO_DAYS( create_time ) = TO_DAYS( DATE_ADD( curdate(), INTERVAL - 1 DAY ) ) ) ) b WHERE b.signMax IS NOT NULL AND TO_DAYS( DATE_ADD( @i, INTERVAL - 1 DAY )) = TO_DAYS( date_sub( a.create_time, INTERVAL 1 DAY ) ) ) c
原文鏈接:https://www.cnblogs.com/anye-15068156823/p/7272377.html