详解MySql Date函数

下面是MySQL中最重要的内建函数

函数  描述

NOW()   返回当前的日期和时间

NOW() 返回当前的日期和时间。
语法
NOW()
-- 实例
-- 下面是 SELECT 语句:
SELECT NOW(),CURDATE(),CURTIME()
结果如下所示:
NOW()   CURDATE()   CURTIME()
2018-06-27 14:25:34   2018-06-27 14:25:34
-- 实例
-- 下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders" 表:
CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (OrderId)
)
-- 请注意,OrderDate 列规定 NOW() 作为默认值。作为结果,当您向表中插入行时,当前日期和时间自动插入列中。
-- 现在,我们想要在 "Orders" 表中插入一条记录:
INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese')
-- "Orders" 表将如下所示:
OrderId   ProductName   OrderDate
1   Jarlsberg Cheese   2018-06-11 14:36:55

CURDATE()   返回当前的日期

-- CURDATE() 返回当前的日期。
-- 实例
-- 下面是 SELECT 语句:
SELECT NOW(),CURDATE(),CURTIME()
结果如下所示:
NOW()   CURDATE()   CURTIME()
2018-06-27 14:25:34   2018-06-27 14:25:34
-- 实例
-- 下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders" 表:
CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (OrderId)
)
-- 请注意,OrderDate 列规定 CURDATE() 作为默认值。作为结果,当您向表中插入行时,当前日期和时间自动插入列中。
-- 现在,我们想要在 "Orders" 表中插入一条记录:
INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese')
-- "Orders" 表将如下所示:
OrderId   ProductName   OrderDate
1   Jarlsberg Cheese   2018-06-11 14:36:55

CURTIME()   返回当前的时间

-- CURTIME() 返回当前的日期。
-- 实例
-- 下面是 SELECT 语句:
SELECT NOW(),CURDATE(),CURTIME()
-- 结果如下所示:
NOW()   CURDATE()   CURTIME()
2018-06-27 14:25:34   2018-06-27 14:25:34

DATE()  提取日期或日期/时间表达式的日期部分

-- DATE() 函数提取日期或日期/时间表达式的日期部分。
-- 实例
-- 假设我们有如下的 "Orders" 表:
OrderId   ProductName   OrderDate
1   Jarlsberg Cheese   2018-06-27 14:53:44.657
-- 下面是 SELECT 语句:
SELECT ProductName, DATE(OrderDate) AS OrderDate
FROM Orders
WHERE OrderId=1
-- 结果如下所示:
ProductName   OrderDate
Jarlsberg Cheese   2018-06-27

EXTRACT()   返回日期/时间的单独部分

-- EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
-- 语法
-- EXTRACT(unit FROM date)
-- date 参数是合法的日期表达式。unit 参数可以是下列的值:
Unit 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
-- 实例
-- 假设我们有如下的 "Orders" 表:
OrderId   ProductName   OrderDate
1   Jarlsberg Cheese   2018-06-2715:03:01
-- 下面是 SELECT 语句:
SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,
EXTRACT(MONTH FROM OrderDate) AS OrderMonth,
EXTRACT(DAY FROM OrderDate) AS OrderDay,
FROM Orders
WHERE OrderId=1
-- 结果如下所示:
OrderYear   OrderMonth   OrderDay
2018   06            27

DATE_ADD()  向日期添加指定的时间间隔

-- DATE_ADD() 函数向日期添加指定的时间间隔。
-- 语法
-- DATE_ADD(date,INTERVAL expr type)
-- date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
-- type 参数可以是下列值:
Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
-- 实例
-- 假设我们有如下的 "Orders" 表:
OrderId   ProductName   OrderDate
1   Jarlsberg Cheese   2018-06-27 15:02:47
-- 现在,我们想要向 "OrderDate" 添加 45 天,这样就可以找到付款日期。
-- 我们使用下面的 SELECT 语句:
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 45 DAY) AS OrderPayDate
FROM Orders
-- 结果:
OrderId   OrderPayDate
1   2018-08-11 15:02:47

DATE_SUB()  从日期减去指定的时间间隔

DATE_SUB() 函数从日期减去指定的时间间隔。
语法
DATE_SUB(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:
Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
实例
假设我们有如下的 "Orders" 表:
OrderId   ProductName   OrderDate
  Jarlsberg Cheese   2018-06-27 15:02:47
现在,我们想要向 "OrderDate" 减去 5 天。
我们使用下面的 SELECT 语句:
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate
FROM Orders
结果:
OrderId   SubtractDate
   2018-06-22 15:02:47

 DATEDIFF() 返回两个日期之间的天数

DATEDUFF() 返回两个日期之间的天数
实例:
SELECT DATEDIFF('2018-11-29','2018-11-30') AS DiffDate
结果:
DiffDate
-1

DATE_FORMAT()   用不同的格式显示日期/时间

DATE_FORMAT() 用不同的格式显示日期/时间
实例:
SELECT DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p');
# DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
'Jun 27 2018 03:12 PM'
SELECT DATE_FORMAT(NOW(),'%m-%d-%Y');
# DATE_FORMAT(NOW(),'%m-%d-%Y')
'06-27-2018'
SELECT DATE_FORMAT(NOW(),'%d %b %y');
# DATE_FORMAT(NOW(),'%d %b %y')
'27 Jun 18'
SELECT DATE_FORMAT(NOW(),'%d %b %Y %T:%f');
# DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
'27 Jun 2018 15:15:44: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 位

下面是数据库中存储日期的数据类型

DATE - 格式:YYYY-MM-DD
DATETIME - 格式:YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
YEAR - 格式:YYYY 或 YY

总结:日期函数有点乱,其实我觉得记住几个经常用到的就可以了,不一定非要全部记住,必定谁都没有过目不忘的本领,而且也不会出题考试,工作中用到哪个记不住查一下就可以了

以上所述是小编给大家介绍的MySql Date函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Mysql常用函数大全(分类汇总讲解)

    一.数学函数 ABS(x)   返回x的绝对值 BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x)   返回大于x的最小整数值 EXP(x)   返回值e(自然对数的底)的x次方 FLOOR(x)   返回小于x的最大整数值 GREATEST(x1,x2,...,xn)返回集合中最大的值 LEAST(x1,x2,...,xn)      返回集合中最小的值 LN(x)                    返回x的自然对数 LOG(x,y)返回x的以y

  • MySQL使用集合函数进行查询操作实例详解

    本文实例讲述了MySQL使用集合函数进行查询操作.分享给大家供大家参考,具体如下: COUNT函数 SELECT COUNT(*) AS cust_num from customers; SELECT COUNT(c_email) AS email_num FROM customers; SELECT o_num, COUNT(f_id) FROM orderitems GROUP BY o_num; SUM函数 SELECT SUM(quantity) AS items_total FROM

  • mysql中find_in_set()函数的使用及in()用法详解

    MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以","分隔 如 (1,2,6,8,10,22) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间. 一个字符串列表就是一个由一些被 ',' 符号分开的子链组成的字符串.如果第一个参数是一个常数字符串,而第

  • MYSQL自定义函数判断是否正整数的实例代码

    可以写一个函数: 主要是使用正则来判断.另外输入字符是空的话,使用"-"来替换. CREATE FUNCTION [dbo].[svf_NonNegativeInteger] ( @val NVARCHAR(4000) ) RETURNS BIT AS BEGIN DECLARE @rtv BIT = 1 SET @val = ISNULL(LTRIM(RTRIM(@val)), N'-') IF @val LIKE '%[^0-9]%' OR @val = N'' SET @rtv

  • MySQL自定义函数简单用法示例

    本文实例讲述了MySQL自定义函数用法.分享给大家供大家参考,具体如下: 先来一个简单的,创建一个函数将'2009-06-23 00:00:00'这样格式的datetime时间转化为'2009年6月23日0时0分0秒'这样的格式: DELIMITER $$ DROP FUNCTION IF EXISTS `sp_test`.`getdate`$$ CREATE FUNCTION `sp_test`.`getdate`(gdate datetime) RETURNS varchar(255) BE

  • MySQL中的排序函数field()实例详解

    前言 我们在日常开发过程中,排序是经常用到的,有时候有这样的需求. 比如,需要在查询结果中根据某个字段的具体值来排序.如下面例子 上面是一张个人信息 表,假如我们想按照'seiki','iris','xut'来排序.也就是name='seiki','iris','xut'的来排序. 碰到这样的需求,我们应该怎么做呢,其实有一个MySQL函数可以非常方便的处理此需求 那就是field()函数 使用方式如下 其中,order by (str,str1,str2,str3,str4--) ,str与s

  • MySQL高效模糊搜索之内置函数locate instr position find_in_set使用详解

    常用的一共有4个方法,如下: 1.使用locate()方法 普通用法: SELECT`column`from`table`wherelocate('keyword',`condition`)>0 类似于java的indexOf(); 不过locate()只要找到返回的结果都大于0(即使是查询的内容就是最开始部分),没有查找到才返回0: 指定起始位置: SELECT LOCATE('bar','foobarbar',5);(从foobarbar的第五个位置开始查找) 2.使用instr()函数(据

  • 详解数据库_MySQL: mysql函数

    一.内置函数 1.数学函数 rand() round(num) ceil(num) floor(num) 随机 四舍五入 向上取整 向下取整 2.字符串函数 length() 字节长度 char_length() 字符长度 ucase() 大写 lcase() 小写 concat(字符,-,字符n) 连接字符串 replace(字符串,旧字符,新字符)字符串替换 截取字符串 left(字符串,截取长度) right(字符串,截取长度) substring(字符串,开始位置,截取长度) #包含开始

  • 详解MySql Date函数

    下面是MySQL中最重要的内建函数 函数  描述 NOW()   返回当前的日期和时间 NOW() 返回当前的日期和时间. 语法 NOW() -- 实例 -- 下面是 SELECT 语句: SELECT NOW(),CURDATE(),CURTIME() 结果如下所示: NOW() CURDATE() CURTIME() 2018-06-27 14:25:34 2018-06-27 14:25:34 -- 实例 -- 下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders&q

  • 详解MySQL拼接函数CONCAT的使用心得

    前几篇文章给大家介绍了MySQL中的替换函数(Replace).切分函数(SubString),今天我们一起来看看MySQL专业拼接"字符串"的函数:concat.老规矩,有好的建议和想法,记得写到评论中,等我上班摸鱼时,跟大家一起吃瓜~ 一.concat函数相关的几种用法 1-1.函数:concat(str1,str2,-) concat 函数一般用在SELECT 查询语法中,用于修改返回字段内容,例如有张LOL英雄信息表如下 mysql> select * from `LOL

  • 详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主键id.字段,那么它们有什么区别?各自效率如何?我们应该使用哪种方式来获取表的行数呢? 当搞清楚count函数的运行原理后,相信上面几个问题的答案就会了然于胸. 2. 表结构 为了解决上述的问题,我创建了一张 user 表,它有两个字段:主键id和name,后者可以为null,建表语句如下. CRE

  • 详解MySQL中的存储过程和函数

    目录 区别 优点 创建储存函数和过程 储存过程 储存函数 查看储存过程 操作 变量 赋值 变量例子 定义条件和处理过程 条件 处理程序 游标 流程控制语句 储存过程和函数就是数据器将一些处理封装起来,调用 区别 调用储存过程只需要使用CALL,然后指定储存名称和参数,参数可以是IN.OUT和INOUT 调用储存函数只需要使用SELECT,指定名称和参数,储存函数必须有返回值,参数只能是IN 优点 良好的封装性 应用程序和SQL逻辑分离 让SQL也具有处理能力 减少网络交互 能够提高系统性能 降低

  • 详解MySQL中存储函数创建与触发器设置

    目录 1.创建存储函数 2.调用存储函数 3.创建触发器 4.在触发器中调用存储过程 5.删除触发器 存储函数也是过程式对象之一,与存储过程相似.他们都是由SQL和过程式语句组成的代码片段,并且可以从应用程序和SQL中调用.然而,他们也有一些区别: 1.存储函数没有输出参数,因为存储函数本身就是输出参数. 2.不能用CALL语句来调用存储函数. 3.存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中 1.创建存储函数 使用CREATE FUNCTION语句创建存储

  • 详解MySQL分区表

    前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理.本篇文章给大家带来的内容是关于MySQL中分区表的介绍及使用场景,有需要的朋友可以参考一下,希望对你有所帮助. 1.分区的目的及分区类型 MySQL在创建表的时候可以通过使用PARTITION BY子句定义每个分区存放的数据.在执行查询的时候,优化器根据分区定义过滤那些没有我们需要的数据的分区,这

  • 详解MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换

    在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储IP地址,而不是使用字符串.但是没有给出具体原因.为了搞清楚这个原因,查了一些资料,记录下来. 相对字符串存储,使用无符号整数来存储有如下的好处: 节省空间,不管是数据存储空间,还是索引存储空间 便于使用范围查询(BETWEEN...AND),且效率更高 通常,在保存IPv4地址时,一个IPv4最小需要7个字符,最大需要15个字符,所以,使用VARCHAR(15

  • 详解MySQL中数据类型和字段类型

    目录 1. mysql的数据类型 (1)数值型 (2)字符(串)型 (3)日期和时间型 (4)null值 2. mysql的列(字段)类型 2.1数值列类型 2.2字符串列类型 2.3日期时间列类型 1. mysql的数据类型 在mysql中有如下几种数据类型: (1)数值型 数值是诸如32 或153.4 这样的值.mysql 支持科学表示法,科学表示法由整数或浮点数后跟“e”或“e”.一个符号(“+”或“-”)和一个整数指数来表示.1.24e+12 和23.47e-1 都是合法的科学表示法表示

  • 详解mysql中的静态变量的作用

    详解mysql中的静态变量的作用 使用静态变量 static variable 示例代码: function Test() { $a = 0; echo $a; $a++; } 本函数没什么用处,因为每次调用时都会将 $a 的值设为 0 并输出 "0".将变量加一的 $a++ 没有作用,因为一旦退出本函数则变量 $a 就不存在了 示例代码: function Test(){ static $a = 0; echo $a; $a++; } 每次调用 Test() 函数都会输出 $a 的值

  • 详解 Mysql中的delimiter定义及作用

    初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程.触发器.函数等. 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其解. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号(;) . 在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令.如输入下面的语句 mysql> select * from test_table;

随机推荐