前言

日期和时间函数部分也是我们日常工作中使用频率比较高的一部分。这一篇我们主要讲讲mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异。大家掌握一个数据库的,其他的遇到不会的,直接查就可以了。

1.获取当前时刻时间

1.1返回当前时刻的日期和时间

1.2获取当前时刻的日期

1.3获取当前时刻的时间

1.4获取当前时刻的周数

2.日期时间格式转换

3.日期时间运算

3.1向后偏移时间

3.2向前偏移时间

3.3两日期做差

文章较长,建议先收藏,慢慢读。

1.获取当前时刻时间

获取当前时刻的时间就是获取程序运行的那一刻与时间相关的数据,比如年月日、时分秒等信息。

1.1返回当前时刻的日期和时间

返回当前时刻的日期和时间在esql中用的是now()函数,直接在select后面写上now()函数即可,具体代码如下:

select now()

运行上面代码就会得到你程序运行这一刻所处的年月日、时分秒的信息,比如:2019-12-25 22:47:37。

1.2获取当前时刻的日期

前面的now()函数获取的是当前时刻的日期和时间,我们有的时候可能只需要当前时刻的日期部分,并不需要时间部分,这个时候在在sql中将now()函数换成curdate()函数,就是获取当前时刻的日期部分,具体代码如下:

select curdate()

通过运行上面的代码,我们得到了当前时刻的日期部分:2019-12-25

curdate()函数是直接获取当前时刻的日期部分,我们也可以先通过now()函数获取当前时刻的日期时间,然后再通过date()函数将日期时间转化为日期部分,具体代码如下:

select date(now())

通过运行上面的代码,会得到与curdate()函数相同的结果。

我们也可以只获取日期中的年,使用的是year()函数,具体代码如下:

select year(now())

通过运行上面的代码,最后得到的结果为2019。

我们也可以只获取日期中的月,使用的是month()函数,具体代码如下:

select month(now())

通过运行上面的代码,最后得到的结果为12。

我们也可以只获取日期中的日,使用的是day()函数,具体代码如下:

select day(now())

通过运行上面的代码,最后得到的结果为25。

1.3获取当前时刻的时间

我们除了有只获取当前时刻的日期的需求外,我们还有只获取当前时刻的时间需求。如果我们想只获取当前时刻的时间,只需要把只获取当前时刻日期的curdate()函数换成curtime()函数即可,具体代码如下:

select curtime()

通过运行上面的代码,就可以获取当前时刻的时间部分:22:47:37。

我们也可以先通过now()函数获取当前时刻的日期时间,然后再通过time()函数将日期时间转化为时间部分,具体代码如下:

select time(now())

通过运行上面的代码,会得到与curdate()函数相同的结果。

我们也可以只获取时间中的小时,使用的是hour()函数,具体代码如下:

select hour(now())

通过运行上面的代码,最后得到的结果为22。

我们也可以只获取时间中的分钟,使用的是minute()函数,具体代码如下:

select minute(now())

通过运行上面的代码,最后得到的结果为47。

我们也可以只获取时间中的秒,使用的是second()函数,具体代码如下:

select second(now())

通过运行上面的代码,最后得到的结果为37。

1.4获取当前时刻的周数

上面我们讲了如何获取当前时刻的日期时间、日期、时间这三部分。这一节我们再看下如何获取当前时刻所属的周数。我们一般会将全年分为52周(365天/7),有的时候也可能是53周,如果我们想看下当前时刻是全年中的第几周,可以使用weekofyear()函数,具体代码如下:

select weekofyear(now())

通过运行上面的代码,最后得到的结果为52。

除了获取当前是全年的第几周以外,我们还需要获取当天是一周内的周几。在sql中使用的dayofweek()函数,具体代码如下:

select dayofweek(now())

通过运行上面的代码,最后得到结果为5,2019年12月25日应该是周四哈,为什么结果是5呢,这是因为该函数中一周是从周日开始的,也就是周日对应的是1,周一对应的是2,以此类推,所以周四对应的是5。

2.日期时间格式转换

我们知道同一个日期时间会有多种不同的表示方式,有的时候需要在不同格式之间相互转换。在sql中我们用的是date_format()函数,date_format函数格式如下:

date_format(datetime,format)

datetime表示要被转换的具体的日期时间,format表示要转换成的格式,可选的格式如下:

主题

格式

描述

%y

4位数的年

%b

月份对应的英文缩写

%m

月份对应的英文全称

%m

01-12的月

%c

1-12的月份数值

%d

01-31的某月里面的第几天

%e

1-31的某月里面的第几天

%d

用th后缀表示某月中的第几天

%j

001-366的一年中的第几天

%a

星期几对应的英文缩写

%w

星期几对应的英文全称

%h

00-23的小时

%h

01-12的小时

%i

00-59的分钟

%s

秒(00-59)

%f

微秒

时分秒

%t

返回当前的时分秒, 24-小时 (hh:mm:ss)

select date_format("2019-12-25 22:47:37","%y-%m-%d")

通过运行上面的代码,就会返回4位数的年、01-12的月、01-31的天,三者之间且用-分隔开来,即2019-12-25。

这里需要注意下1和01的区别,本质上都是表示的1,但是展示上会有些不太一样,比如下面代码中,我们的原日期是2019-1-1,但是返回的结果是2019-01-01的。

select date_format("2019-1-1 22:47:37","%y-%m-%d")

select date_format("2019-12-25 22:47:37","%h:%i:%s")

通过运行上面的代码就会返回00-23的小时、00-59的分、00-59的秒,三者之间用:分隔开来,即22:47:37。

除了date_format()函数以外,还有另外一个函数extract,用于返回一个具体日期时间中的单独部分,比如年、月、日、小时、分钟等等。具体形式如下:

extract(unit from datetime)

datetime表示具体的日期时间,unit表示要从datetime中返回的单独的部分。unit值可以是下列的值:

unit

说明

year

month

day

hour

小时

minute

分钟

second

week

周数,全年第几周

select

extract(year from "2019-12-25 22:47:37") as col1

,extract(month from "2019-12-25 22:47:37") as col2

,extract(day from "2019-12-25 22:47:37") as col3

通过运行上面的代码,就会分别获取到datetime中的年月日,具体结果如下:

col1

col2

col3

2019

12

25

3.日期时间运算

有的时候我们也需要对日期之间进行运算,比如我要获取今天往前7天对应的日期,或者今天往后13天对应的日期,可以去翻日历,也可以去数数,但是这些方法肯定都不是最直接的方法。所以需要日期之间的运算。

3.1向后偏移时间

比如我们要获取今天之后的x天对应的日期,就是相当于在今天日期的基础上加x天,我们把这叫做向后偏移,这个时候就可以使用date_add()函数,具体形式如下:

date_add(date,interval num unit)

date表示当前的日期,或者当前的日期时间;interval是一个固定的参数;num为上面讲到的x;unit表示你要加的单位,是往后移动7天,还是7月,还是7年,可选值与extract函数中unit的可选值是一样的。

select

"2019-01-01" as col1

,date_add("2019-01-01",interval 7 year) as col2

,date_add("2019-01-01",interval 7 month) as col3

,date_add("2019-01-01",interval 7 day) as col4

通过运行上面的代码,就会返回2019-01-01往后7年、7月、7天对应的日期,具体结果如下:

col1

col2

col3

col4

2019-01-01

2026-01-01

2019-08-01

2019-01-08

select

"2019-01-01 01:01:01" as col1

,date_add("2019-01-01 01:01:01",interval 7 hour) as col2

,date_add("2019-01-01 01:01:01",interval 7 minute) as col3

,date_add("2019-01-01 01:01:01",interval 7 second) as col4

通过运行上面的代码,就会返回2019-01-01 01:01:01往后7小时、7分钟、7秒对应的日期,具体结果如下:

col1

col2

col3

col4

2019-01-01 01:01:01

2019-01-01 08:01:01

2019-01-01 01:08:01

2019-01-01 01:01:08

3.2向前偏移时间

有向后偏移,就会有向前偏移。比如我们要获取今天之前的若干天,就是相当于是在当前日期的基础上减去x天,这个时候我们使用的是date_sub()函数,date_sub与date_add的函数形式是一样的。把上面代码中的date_add换成date_sub就表示向前偏移。

select

"2019-01-01" as col1

,date_sub("2019-01-01",interval 7 year) as col2

,date_sub("2019-01-01",interval 7 month) as col3

,date_sub("2019-01-01",interval 7 day) as col4

通过运行上面的代码,就会返回2019-01-01往前7年、7月、7天对应的日期,具体结果如下:

col1

col2

col3

col4

2019-01-01

2012-01-01

2018-06-01

2018-12-25

向前偏移指定的时间,我们除了使用date_sub以外,我们还可以继续使用date_add,只不过把加的具体num值换成负数就行,比如7换成-7即可,具体实现代码如下:

select

"2019-01-01" as col1

,date_add("2019-01-01",interval -7 year) as col2

,date_add("2019-01-01",interval -7 month) as col3

,date_add("2019-01-01",interval -7 day) as col4

通过运行上面的结果与使用date_sub得出来的结果是一致的。

3.3两日期做差

上面讲完了向前偏移、向后偏移,我们有的时候还需要获取两日期之差,使用的datediff()函数,datediff用于返回两日期之间相差的天数,函数形式如下:

datediff(end_date,start_date)

我们是用end_date去减start_date的。

select datediff("2019-01-07","2019-01-01")

通过运行上面的代码,会返回2019-01-07与2019-01-01之间的天数差,结果为6。

你还可以看:

到此这篇关于mysql日期时间函数的文章就介绍到这了,更多相关mysql日期时间函数内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

希望与广大网友互动??

点此进行留言吧!

mysql当前时间往后推一周_一篇文章搞定Mysql日期时间函数相关推荐

  1. asp.net javascrip获取session的值_一篇文章搞定 Django Cookie 与 Session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  2. c++求矩阵的秩_一篇文章搞定矩阵相关概念及意义通俗解释汇总

    最近在学习矩阵相关知识,但是其抽象的解释让人摸不着头脑,通过浏览一些博客的内容和自己的理解,本文通过通俗的语言将矩阵的内涵做了总结.其中除了书本和个人观点,部分引用博客.本文主要帮助大家理解矩阵,但不 ...

  3. matlab基于dct的图像压缩编码解码_一篇文章搞定DCT在JPEG中的本质

    前序傅立叶变换,离散傅立叶变换,推荐这个回答的介绍 想和大家讨论一下jpeg中的dct变换,为什么有效?它有什么更深层次的本质吗?​www.zhihu.com 全篇参考下文,英文较好可以直接看. uc ...

  4. 深度学习数据集制作_一篇文章搞定人工智能之深度学习创建训练数据集的方法

    基础数据准备 训练所需要的数据集合都存储在数据库中,还有部分文本文件 首先对数据进行分类结构化存储[因为涉及到的是多分类问题] 整理并存储原始数据集 使用numpy将所有需要数据读取出来 splitl ...

  5. 关于python论文2000字_一篇文章搞定Python全部基础知识

    前言: 1.Python软件安装 第一章.字符串及数字变量 1.变量 2.数字型数据 要点提炼:这下面那张图就行,至于其它的,就是文本转字数(int),数字转文本(Str) 3.字符串 要点提炼:字符 ...

  6. sql中当前日期加2个月_一文搞定Mysql日期时间函数

    总第184篇/张俊红 日期和时间函数部分也是我们日常工作中使用频率比较高的一部分.这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异.大家掌握一个数据库 ...

  7. mysql大规模读写性能_十招搞定 MySQL 大规模数据库的性能和伸缩性优化

    点击图片报名参加广州&珠海源创会 在需要支持移动/平板电脑应用及普通桌面浏览器访问的时代,网站的普及率和有效性很大程度上取决于其可用性和性能.一个访问缓慢的网站会使得访问者或潜在的客户流失,并 ...

  8. python输入时间_一文搞懂python日期时间处理

    前言 datetime是python的内置模块,用来处理日期和时间. 该模块常用的类有: 本文旨在讲解datetime模块中datetime类的使用方法. datetime对象是 date 与 tim ...

  9. mysql某个表被行锁了_一文搞懂MySQL行锁、表锁、间隙锁详解

    准备工作 创建表 tb_innodb_lock drop table if exists test_innodb_lock; CREATE TABLE test_innodb_lock ( a INT ...

最新文章

  1. 批处理检查电脑是否中了冰河木马
  2. 利用Log Explorer将你已经delete,truncate,drop过的数据进行恢复
  3. 京东商城pop开放平台产品经理
  4. 黑客走开系列1:Python使用元组做函数实参让代码更安全!
  5. 3d激光雷达开发(平面映射)
  6. Java面向对象练习题继承之物种
  7. Repeater控件如何让变量自增 asp.net
  8. 那一年,创业 vs 阿里(下):阿里篇
  9. 从Adobe官网离线下载Photoshop完整安装包
  10. Kaavi and Magic Spell
  11. 网站SEO提升关键词排名的六个步骤
  12. 六.期货期权及其他金融衍生品(投资分析)
  13. GAN学习历程之CycleGAN论文笔记
  14. 基于51单片机十字路口交通灯_5s黄灯闪烁
  15. Android2.1源码目录结构
  16. OCP问题debug
  17. 从0到1爬虫学习笔记:04Scrapy框架
  18. Lora和Zigbee无线通讯技术的对比(哪种技术更适合物联网连接)
  19. 随机数字图片验证码的原理、生成和破解
  20. 【第62期】学会数据分析,抢占职场风口机遇

热门文章

  1. 读博士,17条“活下去”的简单法则!
  2. python excel计算_python计算excel平均值和标准差
  3. Java中单引号和双引号有所区别
  4. 损失函数:Focal Loss
  5. lol什么服务器出无限活力,英雄联盟无限火力什么时候在国服上线
  6. ListView事件的研究
  7. 密码加密工具类(非简单的MD5,UUID加密);
  8. java中人民币的符号怎么打_Java学习笔记---字符串操作(人民币大写转换的实现)...
  9. 治疗鼻炎偏方大曝光 专家实解效果
  10. 经典语录!不看你会后悔!