mysql时间类型和格式转换
内容目录
简介
今天开发中,做一个功能需要对历史数据进行补充,相信大家也遇到过这样的情况,这个历史数据需要按月份和人的id进行区分,于是想到了mysql的时间格式化,这样直接写个sql脚本就不需要程序去执行了,在做到这一块时我个人对时间这一块没有详细了解过,所以借助这个机会整理一下mysql时间相关的内容,其实我这次主要用的是时间格式转换功能,脚本如下
1INSERT INTO `xxxx`.`xxxxx`(`years_month`, `receipt_user_id`, `receipt_freight_charge`, `receipt_other_charges`, `receipt_waiting_charge`, `receipt_insurance_premium`, `c_u`, `c_t`)
2SELECT DATE_FORMAT(c_t,'%y%m'), receipt_user_id, IFNULL(SUM(receipt_freight_charge), 0), IFNULL(SUM(receipt_other_charges), 0),
3IFNULL(SUM(receipt_waiting_charge), 0), IFNULL(SUM(receipt_insurance_premium), 0), 'system', SYSDATE() FROM t_account_truck_drv WHERE c_t < '2019-11-01 00:00:00' GROUP BY DATE_FORMAT(c_t,'%y%m'), receipt_user_id;
mysql时间类型
mysql字段的时间类型分为5种:DATE,DATETIME,TIME,TIMESTAMP,YEAR;
说实话这五种类型我以前只用datetime,为什么用大家都用这个,所以今天趁这个机会整理学习一下。
| 类型 | 字节大小 | 范围 | 格式 | 零值 | 用途 |
|---|---|---|---|---|---|
| DATE | 3 | 1000-01-01/9999-12-32 | YYYY-MM-DD | 0000-00-00 | 日期值 |
| DATETIME | 8 | 1000-01-01 00:00:00/9999-12-32 23:59:59 | YYYY-MM-DD hh:mm:ss | 0000-00-00 00:00:00 | 混合日期和时间值 |
| TIME | 3 | -838:59:59/838:59:59 | hh:mm:ss | 00:00:00 | 时间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:01/2038-01-19 03:14:07 | YYYY:MM:DD: hh:mm:ss | 0000-00-00 00:00:00 | 混合日期和时间值,时间戳 |
| YEAR | 1 | 1901/2155 | YYYY | 0000 | 年份值 |
每个时间类型都有一个有效范围和一个零值,当指定的类型的值超过有效范围时,就会使用零值
上表对各个字段的罗列已经很详细了,根据业务的不同选择合适的字段,只是timestamp还有十几年就到期了,感觉这个不太靠谱了其余的也就没啥了
DATE_FORMAT()函数
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法
1DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
示例:
1SELECT DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'); //Nov 20 2019 03:11 PM
2SELECT DATE_FORMAT(NOW(),'%m-%d-%Y'); //11-20-2019
3SELECT DATE_FORMAT(NOW(),'%d %b %y'); //20 Nov 19
4SELECT DATE_FORMAT(NOW(),'%d %b %Y %T:%f'); //20 Nov 2019 15:11:22:000000
格式描述:
| 格式 | 描述 |
|---|---|
| %a | 缩写星期名 |
| %b | 缩写月名 |
| %c | 月,数值 |
| %D | 带有英文前缀的月中的天 |
| %d | 月的天,数值(00-31) |
| %e | 月的天,数值(0-31) |
| %f | 微秒 |
| %H | 小时 (00-23) |
| %h | 小时 (01-12) |
| %I | 小时 (01-12) |
| %i | 分钟,数值(00-59) |
| %j | 年的天 (001-366) |
| %k | 小时 (0-23) |
| %l | 小时 (1-12) |
| %M | 月名 |
| %m | 月,数值(00-12) |
| %p | AM 或 PM |
| %r | 时间,12-小时(hh:mm:ss AM 或 PM) |
| %S | 秒(00-59) |
| %s | 秒(00-59) |
| %T | 时间, 24-小时 (hh:mm:ss) |
| %U | 周 (00-53) 星期日是一周的第一天 |
| %u | 周 (00-53) 星期一是一周的第一天 |
| %V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
| %v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
| %W | 星期名 |
| %w | 周的天 (0=星期日, 6=星期六) |
| %X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
| %x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
| %Y | 年,4 位 |
| %y | 年,2 位 |
mysql时间类型和格式转换的更多相关文章
- mysql 时间类型datetime与timestamp区别比较
mysql 时间类型datetime与timestamp区别比较 相同点: 显示宽度和格式相同,显示宽度固定在19字符,格式为YYYY-MM-DD HH:MM:SS. 不同点: (1)时间范围不同: ...
- MySQL 时间类型字段的分析
日期类型 存储空间 日期格式 日期范围---------- ...
- MySQL:MySQL日期数据类型、MySQL时间类型使用总结
MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围------------ -------- ...
- MySQL日期数据类型、MySQL时间类型使用总结
MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --- ...
- mysql 时间类型分类
MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围------------ ---- ...
- mysql 时间类型精确到毫秒、微秒及其处理
一.MySQL 获得毫秒.微秒及对毫秒.微秒的处理 MySQL 较新的版本中(MySQL 6.0.5),也还没有产生微秒的函数,now() 只能精确到秒. MySQL 中也没有存储带有毫秒.微秒的日期 ...
- MySQL时间类型及获取、展示处理
MySQL时间格式 mysql所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值 ...
- Mysql时间类型处理
关于Mysql中时间的处理 最近在读<人类简史>,读第二遍.只有晚上睡觉之前读一点点,有时候觉得一天可以抽出一个专门的时间来看书了,效率应该能高不少. 另外分享个网址可以随心创作 这里有一 ...
- Java时间日期字符串格式转换大全
import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 ...
随机推荐
- Java5新特性对数组的支持
增强for循环 → for-each for (参数类型参数名 : 数组名) { 代码块 } Eg: package reviewDemo; public class Demo6 { public s ...
- Vue 组件切换
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- web.xml和@WebServlet
web.xml <servlet> <servlet-name>DZDYServlet</servlet-name> <servlet-class>包名 ...
- P1072 城市轰炸
题目描述 一个大小为N*M的城市遭到了X次轰炸,每次都炸了一个每条边都与边界平行的矩形. 在轰炸后,有Y个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮. 输入格式 ...
- Spring Security 学习笔记-授权控制过滤器
FilterSecurityInterceptor 是比较核心的过滤器,主要负责授权工作.SecurityMetadataSource 需要安全授权的元数据资源 AuthenticationMana ...
- linux内核符号表
我们已经看到 insmod 如何对应共用的内核符号来解决未定义的符号. 表中包含了全局内 核项的地址 -- 函数和变量 -- 需要来完成模块化的驱动. 当加载一个模块, 如何由模块 输出的符号成为内核 ...
- Vue基础练习之计算属性、方法、监听器
<body> <div id="root"> {{fullName()}} {{age}} </div> <script> var ...
- ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(5)
我参考了bui官网,里面提供了大量的接口案例和效果,之前下载的前端框架完全不需要bootstrap,所以从这一节开始,不再使用bootstrap(当然不想改变的也可以继续使用之前的框架,不影响使用), ...
- 用mingw静态编译Qt4.8.2和Qt5.1.1(需要修改不少源码)
因为一些乱七八糟的原因,我需要用mingw静态编译Qt4.8.2和Qt5.1.1.经历了一天的折腾之后,自觉编译一下Qt还是件颇为麻烦的事情,故将过程略作总结,以备不时之需. 首先,在编译之前,我需要 ...
- Redis安装(单机及各类集群,阿里云)
Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很 ...