Mysql日期格式及内置日期函数
一、MySQL中的日期时间类型
- MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp
- datetime和timestamp的区别
相同点
: 存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS
不同点
:
a. 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19,即后者的时间范围很小
.
b. 与时区关系.datetime是存储服务器当前的时区. 而timestamp类型,是将服务器当前时间转换为UTC(世界时间)来存储
.即datetime与时区无关,存什么,返回什么. 而timestamp存储的时间,返回的时间会随着数据库的时区不同而发生改变.
- 详细解释
- datetime :
时间日期型
,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999。但是有零值,0000-00-00 00:00:00;- date:
日期
,就是datetime中的date部分;- time:
时间(段)
,指定的某个区间之间,从-时间到+时间(有负时间表示);- timestamp:
时间戳
,并不是常规意义时间戳(如:14253685),范围是’1970-01-01 00:00:00’到2037年。格式为YYYY-mm-dd HH:ii:ss,格式与datetime完全一致;- year:
yy和yyyy
,yyyy的范围是1901-2155,yy的范围是1970-2069。
两位year(00-69表示2000-2069,70-99表示1970~1999)。当应用只需要记录年份时,year比date更省空间
create table my_date(d1 datetime,d2 date,d3 time,d4 timestamp,d5 year
)charset utf8;
描述表:
测试表
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','2015');
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-11:50:54','2015-09-28 11:51:08','2015');-- -11
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-211:50:54','2015-09-28 11:51:08','2015');-- -2 11
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','-2 11:50:54','2015-09-28 11:51:08','2015');-- -2过去两天
#year用69标识-2069
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','69');-- 69
#year用70标识-1970
insert into my_date VALUES('2015-09-28 11:50:36','2015-09-28','11:50:54','2015-09-28 11:51:08','70');-- 70
insert into my_date VALUES(now(),now(),now(),now(),now());-- 70
二、mysql中获取时间戳
select UNIX_TIMESTAMP();
三、mysql中datetime类型的长度位数
通常我们MySQL中设计datetime类型长度都默认为0:这时插入时间通常会是我们常见到的:2020-08-29 12:52:16格式。但是如果datetime(n)中的n不为0呢?
create table my_date(datetime datetime,datetime2 datetime(2),date date,time time,timestamp timestamp,year year
)charset utf8;
四、mysql常用时间函数
- 获取当前时间
- now()
- sysdate()
- current_timestamp()
sysdate() 日期函数和 now() 类似, 不同之处在于: now() 在执行开始的时候就得到值了, sysdate() 在函数执行时动态得到的值
,例子如下:
- 时间转换函数(字符串转时间,时间转字符串)
- 日期/时间转字符串函数:
date_format(date, format)(可以格式日期和时间), time_format(time, format)(可以格式时间)
字符串转换日期 函数: str_to_date(str, format)
可以看出,str_to_date(str, format) 转换函数, 可以把一些杂乱无章的字符串转换为日期格式
.日期, 天数转换函数:
to_days(date), from_days(days)
,to_days():返回的是一个天数!从年份 0 开始的天数,from_days(days)作用与to_days相反。
- 时间, 秒 转换函数:
time_to_sec(time), sec_to_time(seconds)
两个函数是相互的
- 设定日期, 时间函数:
makedate(year, dayfoyear), maketime(hour, minute, second)
- 时间戳, 日期转换函数:
unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp, format)
# 当前时间戳
select unix_timestamp();
# 指定时间的时间戳
select unix_timestamp('2020-09-09 12:00:00');
# 时间戳转换成日期
select from_unixtime(1599624000);
# 时间戳转换成指定格式日期
select from_unixtime(1599624000, '%Y-%D-%M %h:%i:%s');
五、日期时间计算函数
- 日期增加一个时间间隔函数:
date_add()
set @dt = now();
# 增加一天
select date_add(@dt, interval 1 day);
# 增加一小时
select date_add(@dt, interval 1 hour);
# 增加一周
select date_add(@dt, interval 1 week);
# 增加一季度
select date_add(@dt, interval 1 quarter);
# 增加一天
select date_add(@dt, interval -1 day);
- 为指定日期减去一个时间间隔函数:
date_sub()
,用法如上。 - 两个日期, 时间相减函数:
datediff(date1, date2), timediff(time1, time2)
- 时间戳 (timestamp) 转换, 增加, 减少函数:
timestamp(date), timestamp(dt, time), timestampadd(unit, interval, datetime_expr), timestampdiff(unit, datetime_expr1, datetime_expr2)
# timestamp(date)
mysql> select timestamp('2020-09-09');
+-------------------------+
| timestamp('2020-09-09') |
+-------------------------+
| 2020-09-09 00:00:00 |
+-------------------------+
1 row in set (0.00 sec)# timestamp(dt, time)
mysql> select timestamp('2020-09-09 09:00:00', '01:00:00');
+----------------------------------------------+
| timestamp('2020-09-09 09:00:00', '01:00:00') |
+----------------------------------------------+
| 2020-09-09 10:00:00 |
+----------------------------------------------+
1 row in set (0.00 sec)# timestampadd(unit, interval, datetime_expr)
mysql> select timestampadd(day, 1, '2020-09-09 09:00:00');
+---------------------------------------------+
| timestampadd(day, 1, '2020-09-09 09:00:00') |
+---------------------------------------------+
| 2020-09-10 09:00:00 |
+---------------------------------------------+
1 row in set (0.00 sec)# timestampdiff(unit, datetime_expr1, datetime_expr2), 返回结果以天为单位
mysql> select timestampdiff(day, '2020-09-09', '2020-09-01');
+------------------------------------------------+
| timestampdiff(day, '2020-09-09', '2020-09-01') |
+------------------------------------------------+
| -8 |
+------------------------------------------------+
1 row in set (0.00 sec)# 返回结果以小时为单位
mysql> select timestampdiff(hour, '2020-09-09 09:00:00', '2020-09-01 08:00:00');
+-------------------------------------------------------------------+
| timestampdiff(hour, '2020-09-09 09:00:00', '2020-09-01 08:00:00') |
+-------------------------------------------------------------------+
| -193 |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> select datediff('2020-09-09', '2020-09-01');
+--------------------------------------+
| datediff('2020-09-09', '2020-09-01') |
+--------------------------------------+
| 8 |
+--------------------------------------+
1 row in set (0.00 sec)
timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数
Mysql日期格式及内置日期函数相关推荐
- c mysql加密解密_mysql内置加密函数对数据加密
1 目的 有些业务场景,数据库中的敏感数据需要存储为密文形式,这里使用mysql内置加密函数对数据进行加密. 2 加密算法 对称加密算法:AES 加密后数据转换为:十六进制 3 内置函数说明 函数 说 ...
- VBA与Excel内置的函数
了解VBA与Excel内置的函数,能够使我们处理起任务来事半功倍.这些函数不仅使用方便,而且效率一般都比较高(有些是例外的,特别是某些工作表函数),比我们自己写的要高效的多. VBA内置的函数 VBA ...
- Access内置SQL函数
Access内置SQL函数 CDate 将字符串转化成为日期 select CDate("2005/4/5") Date 返回当前日期 DateAdd 将指定日期加上某个日期sel ...
- awk内置字符串函数详解
awk提供了许多强大的字符串函数,见下表: awk内置字符串函数 gsub(r,s) 在整个$0中用s替代r gsub(r,s,t) 在整个t中用s替代r index(s,t) 返回s中字符串t的第一 ...
- 【Matlab入门】使用内置的函数和常量
使用内置的函数和常量 基本函数 三角函数 atan(a/b):根据正切求角度,范围为[−π2,π2{-}\frac{\pi }{2},\frac{\pi }{2}−2π,2π] atan2(a,b ...
- javascript内置顶层函数
javascript 内置顶层函数 名词解释: 1.函数 2.内置: ECMAscript 内置函数:ECMAscript 自带的函数 Number() 宿主函数: BOM DOM al ...
- 图解+笔记-python语言-第5章:数字/5.3 内置数字工具/5.3.2 内置数学函数
内置数学函数: pow:运算次方 abs:求绝对值 round:四舍五入保留N位小数 >>> a=1.235 >>> round(a,2) 1.24 >> ...
- 学习angularjs的内置API函数
angularjs的内置API函数有很多,如isString()判断给定的对象是否为字符串,如果是返回 true,反之返回false:isNumber()判断给定的对象是否为数字,如果是返回 true ...
- android 时间戳 转日期格式,在Android中转换为简单日期格式或Unix时间戳日期?
我收到日期(2015-03-20T06:34:01.831183 + 01:00)从服务器这不是简单的日期格式,我想这种类型的日期转换为简单的日期格式一样(yyyyMMddHHmmssSSSS)在An ...
最新文章
- PostgreSQL在何处处理 sql查询之六十六
- 直流UPS的研究和应用前景
- Jenkins的Pipeline脚本在美团餐饮SaaS中的实践
- 显示当前没有家庭组计算机,已创建家庭组且加入家庭组,但显示“当前没有其他可用的家庭组计算机?”...
- linux nginx 缓存服务器,如何开启Nginx缓存
- c语言运算符优先级结合,C语言运算符优先级和结合性
- OpenCV : 图像数字化
- lammps教程:如何更清晰观察晶体结构?Ovito渲染技巧介绍
- 【JavaSE】JDK新特性(二)————接口新特性,函数式接口(Suppier,Comsumer,Predicate,Function)
- 微软常用运行库合集(3264位)
- Clusterrolebindings 创建错误
- 理解闭包的前置条件—— λ演算和作用域规则
- Qt保存QTextEdit内存至.txt文件中
- vue实现表格列位置的拖拽
- [数值计算-16]:最小二乘法的求解1 - 一元二次方程解析法求解
- Bezier曲线、B样条和NURBS的基本概念
- mysql的联合索引_mysql联合索引详解
- 算法工程师5——计算机视觉知识点概览
- 笔记本软件页面分辨率低_笔记本分辨率降低怎么办_笔记本电脑电脑分辨率低怎么解决-win7之家...
- python读取文件夹下txt文件,并转化成excel
热门文章
- 文件包含 -- Web渗透
- “我懂的多,是因为犯错多”
- Win10 2004 WSL2 ERROR: 0x800701bc
- 实战:本地存储-2022.3.1(更新版)
- 转型成功——感恩首出集团鼎力相助!
- python输出日历_python打印日历
- python将一张图片分成很多张图片
- mysql错误码:2006-MySQL server has gone away详解
- 关于Swing中使用Substance皮肤和界面刷新问题一角
- 吸取ps以外的颜色_我从黑,白,红以外的颜色中学到了什么