【sql那些事】时间处理的一揽子事
【sql那些事】时间处理的一揽子事
- 建表时自动设置记录的创建和更新时间
- 时区转化
- 当前时间
- 时间格式化
能用SQL解决的事,绝不碰程序
建表时自动设置记录的创建和更新时间
为每一条记录添加create_time
和update_time
是非常明智的选择,分别表示当前记录第一次添加和最后一次更改的时间戳。
如果你不知道sql语句可以自动完成这个事儿,那么就不可避免要在程序中手动去设置这两个字段的值。
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
只要在create table
中加上这两个字段,剩下的事儿压根不需要再操心了。
时区转化
很多时候为了程序处理方便统一,表中某个字段的时间是utc时间,但是生成报表需要转化成北京时间。
SELECT CONVERT_TZ(create_time, "+00:00", "+8:00") AS bj_create_time FROM test_table
其中字段 create_time
是 UTC
的时间,用 convert_tz()
函数可以转成北京时间。
当前时间
有时候需要获取最近7天的创建的数据,那么我们就需要对日期做一个对比,可以借助CURRENT_DATE()
来完成。
SELECT * FROM test_table WHERE create_time > CURRENT_DATE() - INTERVAL 7 DAY
current_date()
获取的是数据库默认设置时区的日期,即UTC
时区,如果create_time
是一个北京时间怎么办?
很简单,结合时区转化函数就可以将current_date()
转换成北京时间。。
SELECT * FROM test_table
WHERE create_time > CONVERT_TZ(CURRENT_DATE() - INTERVAL 7 DAY, "+00:00", "+08:00")
下面这个sql可以用来获取当天的数据,需要用DATE()
函数来获取时间字段的日期值。
SELECT * FROM test_table WHERE DATE(create_time) = CURRENT_DATE()
时间格式化
如果要按月进行统计怎么办?如果要把时间格式化成某一个特定的格式怎么做?不需要查出来后用程序处理,sql语句也能通通搞定。
有一个很常用的时序统计相关的需求,按照月统计新增用户数量并按照日期从小到大排序。
-- 格式化成月
SELECT
COUNT(*) AS cnt,
DATE_FORMAT(create_time, '%Y-%m') AS x
FROM test_table GROUP BY x
GROUP BY x
ORDER BY x-- 格式化成天
SELECT
COUNT(*) AS cnt,
DATE_FORMAT(create_time, '%Y/%m/%d 00:00:00') AS x
FROM test_table
GROUP BY x
ORDER BY x
上面出来的结果就是时间序列的统计结果,某年某月的某一天的某个时辰,都不是问题。
参考Date and Time Functions
【sql那些事】时间处理的一揽子事相关推荐
- 世界上最浪费时间的三件事
世界上最浪费时间的三件事 我问你,世界上最浪费时间的是什么事? 人人网?偷菜?魔兽世界? 不是,尽管它们排名也很靠前. 世界上最浪费时间的是三个单词:WORRY,BLAME,JUDGEMENT. 第一 ...
- 最重要的事和最难的事
最重要的事和最难的事这两个术语没有必然的联系,可是在现实生活中,如果你仔细观察,会泛型其实他们两个可以悄悄地画上等号. 促使我对于这两个词汇进行思考的是最近看的一本畅销书,估计很多朋友也在看,即台湾城 ...
- 晚上鸟沒事,白天没鸟事_鸟箱
晚上鸟沒事,白天没鸟事 This is a sequel to my previous post about image classification using the NABirds data s ...
- 段永平连答53问:不做不对的事,比做对的事更重要
虎嗅注:9月30日,段永平在斯坦福校园与华人学生进行了交流和分享,段永平是步步高.OPPO和vivo的幕后大佬,也是拼多多黄峥的导师与早期投资人.在对话中,他透露了自己"成功的秘诀" ...
- 数字IC设计中ECO的那些事,其实并不是事
数字IC设计中ECO的那些事,其实并不是事! 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 点击标题下「蓝色微信名」可快速关注 刚好最近一直在忙着芯片的测 ...
- Sql server中时间函数用法详解
SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate() 2.DateName ( datepart , dat ...
- SQL SERVER查询时间条件式写法
如下表: tid tname tdate 1 张三 2009-10-29 19:04:50 2 李四 2006-11-12 11: ...
- SQL日期与时间函数
来自网络 sql server日期时间函数 Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上 ...
- mysql从大到小排序_sql语句时间排序 sql语句按照时间排序
sql语句时间排序 sql语句按照时间排序以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL按时间排序 select ...
最新文章
- druid之监控设置及问题小记
- 【Scratch】青少年蓝桥杯_每日一题_2.23_小猫来回走
- 介绍一个轻量级iOS安全框架:SSKeyChain
- 单片机常用的几种通信协议
- UVA10427 Naughty Sleepy Boys【数学】
- struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别添加错误信息
- Hadoop的eclipse1.1.2插件的安装和配置
- 西南大学计算机应用基础作业答案2020,2018秋【西南大学】[0483]《计算机应用基础》作业(资料)...
- spring 配置属性细节
- 安徽2022农民丰收节 国稻种芯:郑栅洁启动舒城主场活动仪式
- OpenSSL之自签名证书认证
- Linux环境下获取硬盘序列号
- 如何用Python操作PDF制作数据报告?
- 【C#】基础函数、运算符和表达式
- 数据元素、数据项、组合项、数据结构
- 程序员求职之道(《程序员面试笔试宝典》)之走进微软
- 装linux系统和安装工具
- 高级信息系统项目管理师十大领域
- 垃圾面试官让我回去等通知!
- 什么是QI认证 QI认证流程
热门文章
- 秒级快速批量创建kvm虚拟机并指定IP地址和主机名
- IndexError:boolean index did not match indexed array along dimension 0
- Python——为什么要在意:模块重载
- 【Windows 命令行】CMD 在资源管理器中打开当前路径
- 【Salient Object Detection】显著性物体检测资料汇总
- 【今日CS 视觉论文速览】Fri, 18 Jan 2019
- s1补考机试 笔记 9206
- C++实现二叉查找树
- 【Web页面测试】测试点和测试用例
- Java架构-每秒上千订单场景下的分布式锁高并发优化实践!