MYSQL获取当前年、季、月、周第一天、最后一天的日期/时间戳
因为做一些商场某个会员今年的消费分析,所以对sql中时间的获取进行了判断。
例如获取今年(即当前年的第一天到昨天0时之间)的消费总额。
如果需要时间戳转换,用UNIX_TIMESTAMP()函数。
一 、下面是一些mysql的时间获取语句:
#当年第一天:
SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); #当年最后一天:
SELECT concat(YEAR(now()),'-12-31'); #当前week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY); #当前week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY); #前一week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY); #前一week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY); #前两week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY); #前两week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY); #当前month的第一天:
SELECT concat(date_format(LAST_DAY(now()),'%Y-%m-'),''); #当前month的最后一天:
SELECT LAST_DAY(now()); #前一month的第一天:
SELECT concat(date_format(LAST_DAY(now() - interval 1 month),'%Y-%m-'),''); #前一month的最后一天:
SELECT LAST_DAY(now() - interval 1 month); #前两month的第一天:
SELECT concat(date_format(LAST_DAY(now() - interval 2 month),'%Y-%m-'),''); #前两month的最后一天:
SELECT LAST_DAY(now() - interval 2 month); #当前quarter的第一天:
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-3 month),'%Y-%m-'),''); #当前quarter的最后一天:
select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-1 month); #前一quarter的第一天:
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-6 month),'%Y-%m-'),''); #前一quarter的最后一天:
select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-4 month); #前两quarter的第一天:
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-9 month),'%Y-%m-'),''); #前两quarter的最后一天:
select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-7 month);
-- 今年的消费总额
SELECT IFNULL(SUM(a.trade_amount)/100,0)
FROM mob_checkout_counter.checkout_record a -- 消费记录表
WHERE card_code = '某会员的标识'
AND checkout_status = ‘消费状态’AND trade_time >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY)) -- 当前年的第一天的时间戳
AND trade_time <= UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY) -- 昨天的0时的时间戳 -- 今年的消费笔数
SELECT COUNT(*)
FROM mob_checkout_counter.checkout_record a
WHERE card_code = ''
AND checkout_status = 1
AND trade_time >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY))
AND trade_time <= UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY) -- 今年的客单价
SELECT IFNULL(SUM(a.trade_amount)/100,0)/COUNT(*)
FROM mob_checkout_counter.checkout_record a
WHERE card_code = ''
AND checkout_status = 1
AND trade_time >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY))
AND trade_time <= UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY)
MYSQL获取当前年、季、月、周第一天、最后一天的日期/时间戳的更多相关文章
- mysql 获取上个月,这个月的第一天或最后一天
/*上个月今天的当前时间*/select date_sub(now(),interval 1 month) /*上个月今天的当前时间(时间戳)*/select UNIX_TIMESTAMP(date_ ...
- 【MySQL基础】Mysql获得当前日期的所在月的第一天
Mysql获得当前日期的所在月的第一天 尊重劳动成果,请访问CSDN著者原文链接 http://blog.csdn.net/zixiao217/article/details/51908506 Ste ...
- java获取本月或某月的第一天和最后一天
获取某月的第一天和最后一天的日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Ca ...
- SQL Server中如何获取当前年,月,日,时,分,秒
分类: SQL Server select GETDATE() as '当前日期',DateName(year,GetDate()) as '年',DateName(month,GetDate()) ...
- 0919MYSQL中取当前周/月/季/年的第一天与最后一天
http://blog.csdn.net/cleanfield/article/details/41447585 整理后的sql代码,全部可执行 #当年第一天: SELECT DATE_SUB(CUR ...
- SQL查询一个月第一天/最后一天及日期格式化
1.一个月第一天的Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一Select DATEADD(wk, DATEDIFF(wk,0,ge ...
- java 和 mysql 获取周 星期 的第一天 最后一天 或者 月的 日期(字符串转日期,日期转字符串,日期加减)
获取周的第一天,最后一天 System.out.println(getStartEndDate("2016-05-01", 1)); 获取星期的第一天和最后一天 System.ou ...
- 编程乐趣:C#获取日期所在周、月份第一和最后一天
原文:编程乐趣:C#获取日期所在周.月份第一和最后一天 写了个小功能,需要用到以周为时间段,于是写了个获取周第一和最后一天的方法,获取月份的第一和最后一天就比较简单了.代码如下: public cla ...
- JS 获取当天所在月的第一天的日期,最后一天日期,所在周的每天的日期,时间,所在每月日期,时间的计算
/** * 获取当天所在月的最后一天日期,和下一个月的第一天日期 * 调用getMonthDay(d), d默认值为01,d为要设置成的day: */ const getMonthMaxDay = ( ...
随机推荐
- [CocoaPods]常见问题
“现在Swift有一个内置的包管理器,CocoaPods会停止开发吗?” Swift Package Manager(SPM)处于“早期设计和开发”阶段[1].它目前不支持iOS,观看操作系统或Obj ...
- 哥们,你真以为你会做这道JVM面试题?
有关Java虚拟机类加载机制相关的文章一搜一大把,笔者这里也不必再赘述一遍了. 笔者这里捞出一道code题要各位大佬来把玩把玩,如果你一眼就看出了端倪,那么恭喜你,你可以下山了: public cla ...
- Maven - 实例-1-手工创建Maven项目
1- 根据包结构创建maven项目目录 TestMaven - src - src/main/java/anliven/testmaven01/HelloMaven.java - src/test/j ...
- Linux - 参考链接
01 - Linux系统监控的Shell脚本 常用的主机监控Shell脚本 使用Shell脚本对Linux系统和进程资源进行监控 02 - Linux系统结构 Linux 系统结构详解 03 - Li ...
- Data - Spark简介
Spark简介 Spark是基于内存计算的大数据并行计算框架,可用于构建大型的.低延迟的数据分析应用程序. HomePage:http://spark.apache.org/ GitHub:https ...
- LeetCode:94_Binary Tree Inorder Traversal | 二叉树中序遍历 | Medium
题目:Binary Tree Inorder Traversal 二叉树的中序遍历,和前序.中序一样的处理方式,代码见下: struct TreeNode { int val; TreeNode* l ...
- 前端下载excel文件功能的三种方法
1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...
- (转)内核模块操作命令-lsmod+rmmod+modinfo+modprobe
原文:http://watchmen.xin/2018/07/13/IT%E7%A7%91%E5%AD%A6%E6%8A%80%E6%9C%AF%E7%9F%A5%E8%AF%86%E4%BD%93% ...
- Android_Fragment和Activity之间的通信
Fragment 的生命周期是随着activity变化而变化的. 如果activity要给在运行的时候给fragment传人数据则需要fragment实现一个自定义的接口,并且实现接口里面的方法,在a ...
- php实现猴子选大王
function getKing($n,$m) { $arr = range(1,$n); $i = 0; while(count($arr) > 1) { if(($i+1) % $m == ...