【sql那些事】时间处理的一揽子事

  • 建表时自动设置记录的创建和更新时间
  • 时区转化
  • 当前时间
  • 时间格式化

能用SQL解决的事,绝不碰程序

建表时自动设置记录的创建和更新时间

为每一条记录添加create_timeupdate_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_timeUTC 的时间,用 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那些事】时间处理的一揽子事相关推荐

  1. 世界上最浪费时间的三件事

    世界上最浪费时间的三件事 我问你,世界上最浪费时间的是什么事? 人人网?偷菜?魔兽世界? 不是,尽管它们排名也很靠前. 世界上最浪费时间的是三个单词:WORRY,BLAME,JUDGEMENT. 第一 ...

  2. 最重要的事和最难的事

    最重要的事和最难的事这两个术语没有必然的联系,可是在现实生活中,如果你仔细观察,会泛型其实他们两个可以悄悄地画上等号. 促使我对于这两个词汇进行思考的是最近看的一本畅销书,估计很多朋友也在看,即台湾城 ...

  3. 晚上鸟沒事,白天没鸟事_鸟箱

    晚上鸟沒事,白天没鸟事 This is a sequel to my previous post about image classification using the NABirds data s ...

  4. 段永平连答53问:不做不对的事,比做对的事更重要

    虎嗅注:9月30日,段永平在斯坦福校园与华人学生进行了交流和分享,段永平是步步高.OPPO和vivo的幕后大佬,也是拼多多黄峥的导师与早期投资人.在对话中,他透露了自己"成功的秘诀" ...

  5. 数字IC设计中ECO的那些事,其实并不是事

    数字IC设计中ECO的那些事,其实并不是事! 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 点击标题下「蓝色微信名」可快速关注 刚好最近一直在忙着芯片的测 ...

  6. Sql server中时间函数用法详解

    SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate()  2.DateName ( datepart , dat ...

  7. SQL SERVER查询时间条件式写法

    如下表: tid    tname     tdate     1      张三      2009-10-29 19:04:50     2      李四      2006-11-12 11: ...

  8. SQL日期与时间函数

    来自网络 sql server日期时间函数 Sql Server中的日期与时间函数 1.   当前系统日期.时间      select getdate() 2. dateadd   在向指定日期加上 ...

  9. mysql从大到小排序_sql语句时间排序 sql语句按照时间排序

    sql语句时间排序 sql语句按照时间排序以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL按时间排序 select ...

最新文章

  1. druid之监控设置及问题小记
  2. 【Scratch】青少年蓝桥杯_每日一题_2.23_小猫来回走
  3. 介绍一个轻量级iOS安全框架:SSKeyChain
  4. 单片机常用的几种通信协议
  5. UVA10427 Naughty Sleepy Boys【数学】
  6. struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别添加错误信息
  7. Hadoop的eclipse1.1.2插件的安装和配置
  8. 西南大学计算机应用基础作业答案2020,2018秋【西南大学】[0483]《计算机应用基础》作业(资料)...
  9. spring 配置属性细节
  10. 安徽2022农民丰收节 国稻种芯:郑栅洁启动舒城主场活动仪式
  11. OpenSSL之自签名证书认证
  12. Linux环境下获取硬盘序列号
  13. 如何用Python操作PDF制作数据报告?
  14. 【C#】基础函数、运算符和表达式
  15. 数据元素、数据项、组合项、数据结构
  16. 程序员求职之道(《程序员面试笔试宝典》)之走进微软
  17. 装linux系统和安装工具
  18. 高级信息系统项目管理师十大领域
  19. 垃圾面试官让我回去等通知!
  20. 什么是QI认证 QI认证流程

热门文章

  1. 秒级快速批量创建kvm虚拟机并指定IP地址和主机名
  2. IndexError:boolean index did not match indexed array along dimension 0
  3. Python——为什么要在意:模块重载
  4. 【Windows 命令行】CMD 在资源管理器中打开当前路径
  5. 【Salient Object Detection】显著性物体检测资料汇总
  6. 【今日CS 视觉论文速览】Fri, 18 Jan 2019
  7. s1补考机试 笔记 9206
  8. C++实现二叉查找树
  9. 【Web页面测试】测试点和测试用例
  10. Java架构-每秒上千订单场景下的分布式锁高并发优化实践!