MySql 学习之路-Date函数
MySQL中重要的内建函数
函数 描述 NOW() 返回当前的日期和时间
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 NOW() 返回当前的日期和时间。 2 语法 3 NOW() 4 5 -- 实例 6 7 -- 下面是 SELECT 语句: 8 SELECT NOW(),CURDATE(),CURTIME() 9 10 结果如下所示: 11 NOW() CURDATE() CURTIME() 12 2018-06-27 14:25:34 2018-06-27 14:25:34 13 -- 实例 14 15 -- 下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders" 表: 16 CREATE TABLE Orders 17 ( 18 OrderId int NOT NULL, 19 ProductName varchar(50) NOT NULL, 20 OrderDate datetime NOT NULL DEFAULT NOW(), 21 PRIMARY KEY (OrderId) 22 ) 23 24 -- 请注意,OrderDate 列规定 NOW() 作为默认值。作为结果,当您向表中插入行时,当前日期和时间自动插入列中。 25 26 -- 现在,我们想要在 "Orders" 表中插入一条记录: 27 INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese') 28 29 -- "Orders" 表将如下所示: 30 OrderId ProductName OrderDate 31 1 Jarlsberg Cheese 2018-06-11 14:36:55
CURDATE() 返回当前的日期
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 -- CURDATE() 返回当前的日期。 2 3 -- 实例 4 5 -- 下面是 SELECT 语句: 6 SELECT NOW(),CURDATE(),CURTIME() 7 8 结果如下所示: 9 NOW() CURDATE() CURTIME() 10 2018-06-27 14:25:34 2018-06-27 14:25:34 11 -- 实例 12 13 -- 下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders" 表: 14 CREATE TABLE Orders 15 ( 16 OrderId int NOT NULL, 17 ProductName varchar(50) NOT NULL, 18 OrderDate datetime NOT NULL DEFAULT CURDATE(), 19 PRIMARY KEY (OrderId) 20 ) 21 22 -- 请注意,OrderDate 列规定 CURDATE() 作为默认值。作为结果,当您向表中插入行时,当前日期和时间自动插入列中。 23 24 -- 现在,我们想要在 "Orders" 表中插入一条记录: 25 INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese') 26 27 -- "Orders" 表将如下所示: 28 OrderId ProductName OrderDate 29 1 Jarlsberg Cheese 2018-06-11 14:36:55
CURTIME() 返回当前的时间
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 -- CURTIME() 返回当前的日期。 2 3 -- 实例 4 5 -- 下面是 SELECT 语句: 6 SELECT NOW(),CURDATE(),CURTIME() 7 8 -- 结果如下所示: 9 NOW() CURDATE() CURTIME() 10 2018-06-27 14:25:34 2018-06-27 14:25:34
DATE() 提取日期或日期/时间表达式的日期部分
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 -- DATE() 函数提取日期或日期/时间表达式的日期部分。 2 -- 实例 3 4 -- 假设我们有如下的 "Orders" 表: 5 OrderId ProductName OrderDate 6 1 Jarlsberg Cheese 2018-06-27 14:53:44.657 7 8 -- 下面是 SELECT 语句: 9 SELECT ProductName, DATE(OrderDate) AS OrderDate 10 FROM Orders 11 WHERE OrderId=1 12 13 -- 结果如下所示: 14 ProductName OrderDate 15 Jarlsberg Cheese 2018-06-27
EXTRACT() 返回日期/时间的单独部分
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 -- EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。 2 -- 语法 3 -- EXTRACT(unit FROM date) 4 5 -- date 参数是合法的日期表达式。unit 参数可以是下列的值: 6 Unit 值 7 MICROSECOND 8 SECOND 9 MINUTE 10 HOUR 11 DAY 12 WEEK 13 MONTH 14 QUARTER 15 YEAR 16 SECOND_MICROSECOND 17 MINUTE_MICROSECOND 18 MINUTE_SECOND 19 HOUR_MICROSECOND 20 HOUR_SECOND 21 HOUR_MINUTE 22 DAY_MICROSECOND 23 DAY_SECOND 24 DAY_MINUTE 25 DAY_HOUR 26 YEAR_MONTH 27 28 -- 实例 29 30 -- 假设我们有如下的 "Orders" 表: 31 OrderId ProductName OrderDate 32 1 Jarlsberg Cheese 2018-06-2715:03:01 33 34 -- 下面是 SELECT 语句: 35 SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear, 36 EXTRACT(MONTH FROM OrderDate) AS OrderMonth, 37 EXTRACT(DAY FROM OrderDate) AS OrderDay, 38 FROM Orders 39 WHERE OrderId=1 40 41 -- 结果如下所示: 42 OrderYear OrderMonth OrderDay 43 2018 06 27
DATE_ADD() 向日期添加指定的时间间隔
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 -- DATE_ADD() 函数向日期添加指定的时间间隔。 2 -- 语法 3 -- DATE_ADD(date,INTERVAL expr type) 4 5 -- date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 6 7 -- type 参数可以是下列值: 8 Type 值 9 MICROSECOND 10 SECOND 11 MINUTE 12 HOUR 13 DAY 14 WEEK 15 MONTH 16 QUARTER 17 YEAR 18 SECOND_MICROSECOND 19 MINUTE_MICROSECOND 20 MINUTE_SECOND 21 HOUR_MICROSECOND 22 HOUR_SECOND 23 HOUR_MINUTE 24 DAY_MICROSECOND 25 DAY_SECOND 26 DAY_MINUTE 27 DAY_HOUR 28 YEAR_MONTH 29 30 -- 实例 31 32 -- 假设我们有如下的 "Orders" 表: 33 OrderId ProductName OrderDate 34 1 Jarlsberg Cheese 2018-06-27 15:02:47 35 36 -- 现在,我们想要向 "OrderDate" 添加 45 天,这样就可以找到付款日期。 37 38 -- 我们使用下面的 SELECT 语句: 39 SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 45 DAY) AS OrderPayDate 40 FROM Orders 41 42 -- 结果: 43 OrderId OrderPayDate 44 1 2018-08-11 15:02:47
DATE_SUB() 从日期减去指定的时间间隔
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 DATE_SUB() 函数从日期减去指定的时间间隔。 2 语法 3 DATE_SUB(date,INTERVAL expr type) 4 5 date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 6 7 type 参数可以是下列值: 8 Type 值 9 MICROSECOND 10 SECOND 11 MINUTE 12 HOUR 13 DAY 14 WEEK 15 MONTH 16 QUARTER 17 YEAR 18 SECOND_MICROSECOND 19 MINUTE_MICROSECOND 20 MINUTE_SECOND 21 HOUR_MICROSECOND 22 HOUR_SECOND 23 HOUR_MINUTE 24 DAY_MICROSECOND 25 DAY_SECOND 26 DAY_MINUTE 27 DAY_HOUR 28 YEAR_MONTH 29 30 实例 31 32 假设我们有如下的 "Orders" 表: 33 OrderId ProductName OrderDate 34 1 Jarlsberg Cheese 2018-06-27 15:02:47 35 36 现在,我们想要向 "OrderDate" 减去 5 天。 37 38 我们使用下面的 SELECT 语句: 39 SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate 40 FROM Orders 41 42 结果: 43 OrderId SubtractDate 44 1 2018-06-22 15:02:47
DATEDIFF() 返回两个日期之间的天数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 DATEDUFF() 返回两个日期之间的天数 2 实例: 3 4 SELECT DATEDIFF('2018-11-29','2018-11-30') AS DiffDate 5 6 结果: 7 DiffDate 8 -1
DATE_FORMAT() 用不同的格式显示日期/时间
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 DATE_FORMAT() 用不同的格式显示日期/时间 2 3 实例: 4 SELECT DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'); 5 # DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') 6 'Jun 27 2018 03:12 PM' 7 8 SELECT DATE_FORMAT(NOW(),'%m-%d-%Y'); 9 # DATE_FORMAT(NOW(),'%m-%d-%Y') 10 '06-27-2018' 11 12 SELECT DATE_FORMAT(NOW(),'%d %b %y'); 13 # DATE_FORMAT(NOW(),'%d %b %y') 14 '27 Jun 18' 15 16 SELECT DATE_FORMAT(NOW(),'%d %b %Y %T:%f'); 17 # DATE_FORMAT(NOW(),'%d %b %Y %T:%f') 18 '27 Jun 2018 15:15:44:000000' 19 20 可以使用的格式有: 21 格式 描述 22 %a 缩写星期名 23 %b 缩写月名 24 %c 月,数值 25 %D 带有英文前缀的月中的天 26 %d 月的天,数值(00-31) 27 %e 月的天,数值(0-31) 28 %f 微秒 29 %H 小时(00-23) 30 %h 小时(01-12) 31 %I 小时(01-12) 32 %i 分钟,数值(00-59) 33 %j 年的天(001-366) 34 %k 小时(0-23) 35 %l 小时(1-12) 36 %M 月名 37 %m 月,数值(00-12) 38 %p AM 或 PM 39 %r 时间,12-小时(hh:mm:ss AM 或 PM) 40 %S 秒(00-59) 41 %s 秒(00-59) 42 %T 时间, 24-小时(hh:mm:ss) 43 %U 周(00-53)星期日是一周的第一天 44 %u 周(00-53)星期一是一周的第一天 45 %V 周(01-53)星期日是一周的第一天,与 %X 使用 46 %v 周(01-53)星期一是一周的第一天,与 %x 使用 47 %W 星期名 48 %w 周的天(0=星期日, 6=星期六) 49 %X 年,其中的星期日是周的第一天,4 位,与 %V 使用 50 %x 年,其中的星期一是周的第一天,4 位,与 %v 使用 51 %Y 年,4 位 52 %y 年,2 位
MySql中存储日期的数据类型
DATE - 格式:YYYY-MM-DD DATETIME - 格式:YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS YEAR - 格式:YYYY 或 YY
总结:日期函数有点乱,其实我觉得记住几个经常用到的就可以了,不一定非要全部记住,必定谁都没有过目不忘的本领,而且也不会出题考试,工作中用到哪个记不住查一下就可以了
----------------------------真正的勇士, 敢于直面惨淡的Warning、 敢于正视淋漓的Error--------------------------
版权声明
出处: 博客园Linux超的技术博客--https://www.cnblogs.com/linuxchao/
您的支持是对博主最大的鼓励,感谢您的认真阅读
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
作者: Linux超