MySQL year()函数
转载自 MySQL year()函数
MySQL YEAR函数简介
YEAR()
函数接受date
参数,并返回日期的年份。请参阅YEAR()
函数的语法:
YEAR(date);
YEAR()
函数返回一个指定日期的年份值,范围为1000
到9999
,如果日期为零,YEAR()
函数返回0
。
以下示例返回2018-01-01日
的年份,即2018
。
mysql> SELECT YEAR('2018-01-01');
+--------------------+
| YEAR('2018-01-01') |
+--------------------+
| 2018 |
+--------------------+
1 row in set
以下语句返回当前年份:
mysql> SELECT YEAR(NOW());
+-------------+
| YEAR(NOW()) |
+-------------+
| 2017 |
+-------------+
1 row in set
在本示例中,YEAR()
函数返回NOW()
函数提供的当前日期和时间的年份信息。
如果日期为NULL
,则YEAR()
函数将返回NULL
,如以下示例所示:
mysql> SELECT YEAR(NULL);
+------------+
| YEAR(NULL) |
+------------+
| NULL |
+------------+
1 row in set
如前所述,零日期的YEAR()
结果为NULL
(有的MySQL版本求值结果为:0
):
mysql> SELECT YEAR('0000-00-00');
+--------------------+
| YEAR('0000-00-00') |
+--------------------+
| NULL |
+--------------------+
1 row in set
下面来看看看示例数据库(yiibaidb)中的orders
表。
以下查询使用YEAR()
函数来获取每年发货的订单数量,如下查询语句 -
SELECT YEAR(shippeddate) year, COUNT(ordernumber) orderQty
FROM orders
WHEREshippeddate IS NOT NULL
GROUP BY YEAR(shippeddate)
ORDER BY YEAR(shippeddate);
执行上面查询语句,得到以下结果 -
+------+----------+
| year | orderQty |
+------+----------+
| 2013 | 110 |
| 2014 | 147 |
| 2015 | 55 |
| 2017 | 1 |
+------+----------+
4 rows in set
在这个例子中,我们使用YEAR()
函数从出货日期中提取年度信息,并使用COUNT()
函数计算已发送订单的数量,GROUP BY
子句按年份组合订单数量。
MySQL YEAR函数和索引
目前,MySQL没有支持函数索引。 这意味着如果在列上使用索引,表达式YEAR(column)
也不会利用索引。
了方便演示,这里创建一个名为dates
的新表:
USE testdb;
CREATE TABLE dates (id INT PRIMARY KEY AUTO_INCREMENT,dt DATE
);
dt
列将存储日期数据。以下语句在dates
表的dt
列上创建一个索引。
CREATE INDEX idx_td ON dates(dt);
我们将在日期表中插入大量的日期数据。最简单的方法是使用递归CTE生成日期序列,并将此日期序列插入到dates
表中。
以下递归CTE
生成“1800-01-01”
和“2020-12-31”
之间的日期:
WITH RECURSIVE dates (dt) AS
(SELECT '1800-01-01'UNION ALLSELECT dt + INTERVAL 1 DAY FROM datesWHERE dt + INTERVAL 1 DAY <= '2020-12-31'
)
SELECT dt FROM dates;
要将此日期序列插入到dates
表中,请使用以下INSERT语句:
INSERT INTO dates(dt)
WITH RECURSIVE dates (dt) AS
(SELECT '1800-01-01'UNION ALLSELECT dt + INTERVAL 1 DAY FROM datesWHERE dt + INTERVAL 1 DAY <= '2020-01-01'
)
SELECT dt FROM dates;
您可以使用以下查询查找orders
表中的行数:
SELECT COUNT(*)
FROMdates;
现在可以看到,dates
表共有80354
行记录。
要获取2014
年的所有日期,请使用以下查询:
SELECT *
FROMdates
WHEREYEAR(dt) = 2014;
或者 -
SELECT *
FROMdates
WHEREdt BETWEEN '2014-01-01' and '2014-12-31';
两个查询返回365
行,这是正确的。
但是,性能方面存在差异。第一个查询检查日期表中的所有行和索引中的某些行,而第二个查询中使用更快的索引。
请参阅EXPLAIN
的两个查询:
EXPLAIN SELECT *
FROMdates
WHEREYEAR(dt) = 2014;
第二个语句 -
EXPLAIN SELECT *
FROMdates
WHEREdt BETWEEN '2014-01-01' and '2014-12-31';
即使MySQL YEAR()
函数很方便,当涉及到性能时,您应该始终考虑使用它。
在本教程中,我们向您介绍了MySQL YEAR()
函数,并给出了使用它的一些示例。
MySQL year()函数相关推荐
- oracle增量 mysql_是否有任何mysql / Oracle函数给予增量号。基于另一列相似值的一列?...
我有兴趣知道是否有任何MySQL / Oracle函数给增量号.在另一列相似的值的基础上的一列? 就像在我的下面的代码中,我有order_primary列,其中包含订单号.所以基于此我们可以确定有多少 ...
- ipad php mysql_PHP中的MYSQL常用函数
PHP中的MYSQL常用函数 1.mysql_connect()-建立数据库连接 格式: resource mysql_connect([string hostname [:port] [:/path ...
- mysql 本周函数_【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据...
MySQL时间函数的使用:查询本周.上周.本月.上个月份的数据[转] /*今天*/ select * from 表名 where to_days(时间字段) = to_days(now()); /*昨 ...
- mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧
本文的环境是Windows 10,MySQL版本是5.7.12-log 一. 基本使用 count的基本作用是有两个: 统计某个列的数据的数量: 统计结果集的行数: 用来获取满足条件的数据的数量.但是 ...
- MySQL STR_TO_DATE函数
转: MySQL STR_TO_DATE函数 2017年12月05日 15:41:58 木林森淼 阅读数:23822 版权声明:水平有限,如有补充或更正,望大家评论指正 https://blog.cs ...
- MYSQL 加密函数的用法
常见加密函数有md5,hash,password等,mysql应用web一般都是md5,32位的,下面讲将MYSQL 加密函数的用法.1,md5加密用法select md5('admin');2,pa ...
- Mysql 常用函数(19)- mod 函数
Mysql常用函数的汇总,可看下面文章 https://www.cnblogs.com/poloyy/p/12890763.html mod 的作用 求余数,和%一样 mod的语法格式 mod(n,m ...
- mysql自定义函数应用_mysql functions实例:在自定义函数中应用字符串函数
分享一段mysql自定义函数的代码,在其中用到了mysql的字符串函数length. 代码: mysql> delimiter $$ mysql> CREATE FUNCTION myFu ...
- mysql 聚合函数内比较运算符_关于常用 MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结...
/* 关于MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结,*/ -- 1 运算符优先级 /* 12.1.1. 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符 ...
- 数据库系列之mysql 自定义函数function,函数和存储过程的区别
mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 https://blo ...
最新文章
- 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY15-规则学习
- html中怎么获取搜索框中的值,百度API 搜索框,获取相应的地点的uid
- 重新学习Spring2——IOC和AOP原理彻底搞懂
- xampp mysql 查询很慢_如何开启mysql的慢查询机制
- 小米10之后摩托罗拉Edge+也要用一亿像素相机,还有3.5耳机孔
- 文件服务器 ip,共享文件服务器的ip地址
- 大学生计算机考试题题库,大学生统考计算机一级考试试题题库(供参考)
- 自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
- 北京亚信科技java笔试题_亚信科技java面试题及答案
- Linux网络编程——UDP编程
- golang 常用配置
- MyEclipse集成SVN插件subclipse
- 啊哈c语言114页习题:设计一个小人,让它从右边向左边奔跑
- javascript 上传的Excel格式校验
- 4.蒙特卡洛(Monte-Carlo, MC)+时序差分(Temporal Difference, TD)
- 实践一 网络攻防环境的搭建
- 如何旋转树莓派的显示屏幕
- 从拖延到高效,我推荐这7本书
- 阿里云轻量服务器使用一年使用体验(个人心得,仅供参考)
- “排队” 用英语怎么说
热门文章
- java swing 控件拖动_java swing中实现拖拽功能示例
- 《C++ Primer》13.1.6节练习(部分)
- [蓝桥杯2017初赛]方格分割-dfs+思维
- [蓝桥杯2019初赛]特别数的和-枚举
- 算法-排序-k排序(算法导论第三版第八章思考题8-5)
- And Then There Was One POJ - 3517(变形约瑟夫环+规律)
- javascript php 传值,js 传值到 PHP 有关问题
- python做接口自动化如何输出测试报告-python生成接口自动化测试报告模版
- 应用服务器——JBoss架构分析
- Java修炼之路——基础篇——String