【数据库】Mysql日期/时间相关函数汇总

当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。

MySQL Date 函数

下面的表格列出了 MySQL 中最重要的内建日期函数:

函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间按的单独部分
DATE_ADD()给日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间

下面通过具体列子说明每个函数的使用方法:

# 当前完整时间
select now() as 当前时间1;                 -- 2019-11-12 10:29:50
select current_timestamp() as 当前时间2;   -- 2019-11-12 10:29:50# 当前日期或时间部分
select current_date() as 当前日期部分1;    -- 2019-11-12 
select CURDATE() as 当前日期部分2;         -- 2019-11-12 
select DATE(now()) as 获取日期部分3;       -- 2019-11-12
select current_time() as 当前时间部分1;    -- 10:28:58
select CURTIME() as 当前时间部分2;         -- 10:28:58
select time(now()) as 获取时间部分3;       -- 10:28:58# 时间戳与时间之间转化
select unix_timestamp() as 获得unix时间戳;                   -- 1573525853
select from_unixtime(unix_timestamp()) as 从时间戳获得时间;  -- 2019-11-12 10:30:53# 返回日期/时间的单独部分(年、月、日等)
select EXTRACT(YEAR  FROM now()) as 返回年份;                -- 2019
select EXTRACT(MONTH FROM now()) as 返回月份;                -- 11
select EXTRACT(DAY   FROM now()) as 返回天数;                -- 12
select year(now())  as 返回年份2;                            -- 2019
select month(now()) as 返回月份2;                            -- 11
select day(now())   as 返回天数2;                            -- 12# 对日期进行格式化
select DATE_FORMAT(now(), '%Y%m%d') as 格式化时间1;          -- 20191112
select DATE_FORMAT(now(), '%Y%m01') as 格式化时间2;          -- 20191101
select DATE_FORMAT(now(), '%Y-%m')  as 格式化时间3;          -- 2019-11# 时间相加减
select DATE_SUB(now(),interval 1 day) as 日期相减1;          -- 2019-11-11 10:32:22
select DATE_ADD(now(),interval -1 day) as 日期相减2;         -- 2019-11-11 10:32:22select DATE_ADD(now(),interval 1 day) as 日期相加1;          -- 2019-11-13 10:32:22
select DATE_SUB(now(),interval -1 day) as 日期相加2;         -- 2019-11-13 10:32:22# 前面减后面(只计算天数)
select DATEDIFF(DATE_ADD(now(),interval 1 day),now()) as 前面日期减后面日期得到天数;# 后面减去前面
SELECT TIMESTAMPDIFF(YEAR, '2018-11-13 00:00:00',now()) as 相差年份数;    -- 当前日期2019-11-12:如果2019-11-12 00:00:00结果1;2019-11-11 00:00:00结果1;2019-11-13 00:00:00结果0
SELECT TIMESTAMPDIFF(MONTH,'2019-03-13 00:00:00',now()) as 相差月份数;    -- 当前日期2019-11-12:如果2019-03-12 00:00:00结果8;2019-03-11 00:00:00结果8;2019-03-13 00:00:00结果7
SELECT TIMESTAMPDIFF(DAY,  '2019-11-11 11:00:00',now()) as 相差天数;      -- 当前日期2019-11-12 11:00:00 :如果2019-11-11 11:00:00结果1;2019-11-11 10:00:00结果1;2019-11-11 12:00:00结果0

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【测试方法篇】效率测试

一、操作数据库 1、测试页面数据翻页功能,使用insert插入多条数据,测试完成后,再删除插入的数据 2、订单表order,订单状态字段status 1新订单 2已提交订单 3已付款订单 4已发货订单 5已完成订单 已付款列表页,只…

Django+Jquery+Ajax+验证码登录案例

1,创建项目test04 2,创建应用app为booktest 3,注册应用booktest 作用让创建的应用运行起来 4,在项目根目录下创建模板templates目录 作用就是存放html文件在项目的settings.py文件中配置模板,如下图:5&…

【数据库】Mysql日期/时间函数实际案例

有一款金融产品,总共24期,每月2日到期还款日,第一个到期还款日为放款日下个月的2日,现在我们知道所有订单的放款时间,现在我们想统计每个订单当前时间是第几期。 举个简单例子:当期日期为2019-11-12&#…

【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动

之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢? 其实我们可以将用…

module 'queue' has no attribute 'Queue'解决

import queue q queue.Queue() q.put(a) q.put(b) print(q.get())错误: AttributeError: module queue has no attribute Queue 解决方法: 把程序名命名和包名一样导致错误。命名为queue1.py就ok了

【Python】import自己的模块报错

在实际使用python时,我们会将一些公共的东西写到一些基础模块中,供其他模块去调用,这时会去import自定义的一些基础模块,然后来导入。 自己写好了脚本,然后导入,导入的情况分为以下情况: 1. 运行…

Jmeter生成自动化和性能多维度测试报告(性能指标和监听器图表)

jmeter在命令行下还可以生成多维度的测试报告,里面包含了常用的性能指标和监听器图表。 一、环境要求 1、jmeter3.0版本之后开始支持动态生成测试报表 2、jdk版本1.7以上 3、需要jmx脚本文件 二、生成jtl文件 1、进入bin目录下cd jmeter -n -t C:\jmeter\apach…

python3判断字典、列表、元组为空以及字典是否存在某个key的方法

m1[] m2{} m3() m4{"name":1,"age":2} #也可用if not m1:print("m1不是列表") if m1:print("m1不是列表") else:print(m1)print("m1是空列表")if m2:print("m2不是字典") else:print("m2是空字典") if …

【Python】pyinstaller模块打包的exe在windows环境无法使用问题汇总

问题一:解决pyinstaller打包发布后的exe文件打开控制台闪退的问题 pyinstaller打包发布后的exe文件在自己电脑能够正常使用,但是给到别人的电脑时,打开exe文件却发生闪退,看不到具体的原因。 1、定位问题: 1.1.切换到…

Appium+PythonUI自动化测试之uiautomatorviewer和Inspector元素定位

一、uiautomatorviewer uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。 1、启动uiautomatorviewer.bat,打开sdk安装…

服务器购买和远程连接

1. 申请阿里云服务器 *打开阿里云ECS购买页面,并用淘宝账号登陆,可以按需购买。基础配置的话包月大约60元/月 在部署阶段也可以选择按使用流量付费,只需要32元/月,后续部署成功后进行配置升级 操作系统选择Ubuntu的最新版本 …

【批处理】通过bat文件执行python程序

有时我们写的一些python程序,由于每天都经常使用,因此不希望每次都打开IDE客户端或者cmd命令去执行,我们可以写一些bat脚本,每次需要执行时,双击一下脚本就可以了。下面介绍一下三种方法: 1. 简单方法&…

Ubuntu安装包时报错 E:Unable to locate package xxx(如:python3-pip)

一般进入Ubuntu后需要先更新软件源: apt-get update 就ok了 参考自:https://blog.csdn.net/BobYuan888/article/details/80874075

Python一行代码给儿子制作九九乘法表

一行代码实现九九乘法表print(\n.join( .join([%sX%s%s%(j,i,i*j) for j in range(1,i1)]) for i in range(1,10)))1X11 1X22 2X24 1X33 2X36 3X39 1X44 2X48 3X412 4X416 1X55 2X510 3X515 4X520 5X525 1X66 2X612 3X618 4X624 5X630 6X636 1X77 2X714 3X721 4X728 5X735 6X74…

【Linux】与用户管理相关的命令总结

这篇文章主要总结一下linux中用户相关的命令: 一、查询用户信息相关: 二、用户创建、删除相关: 三、用户密码相关 四、用户组相关 一、查询用户信息相关: 1. cat /etc/passwd 可以查看所有用户的列表 具体内容介绍 :分隔成7个…

Xshell连接阿里云服务器ECS

1. 参考资料: 1). 《阿里云服务器怎么用?阿里云服务器使用教程》 链接:http://www.cr173.com/html/50758_1.html 2). eagle-zhang的CSDN博客《Xshell连接不上阿里云服务 链接:http://blog.csdn.net/zhangxing52077/…

【数据库】Windows安装redis全流程

Redis:REmote DIctionary Server(远程字典服务),是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。 是完全开源免费的,用C语言编写的,遵守BSD协议,高性…

Jmeter跨线程组传递参数

jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B和线程组C中被调用的。 但是有时为了方便管理,我们可能是把各个接口单独存放在不同的线程组中。拿token来说,虽然每…

yum 不能安装应用,提示There are no enabled repos Run yum repolist all

一般来说著名的linux系统基本上分两大类: 1 RedHat系列:Redhat、Centos、Fedora等 2 Debian系列:Debian、Ubuntu等 RedHat 系列: 1 常见的安装包格式 rpm 包,安装rpm包的命令是 “rpm -参数” 2 包管理工具 yum 3 支持…

【工具】Notepad++的一些常用配置

Notepad是d Winows操作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。 本文主要介绍了Notepad的一些常用配置。 一、设置默认打开txt、java文件 菜单:设置—>首选项—>文件关联 设置后&a…