MySQL year()函数

转载自  MySQL year()函数

MySQL YEAR函数简介

YEAR()函数接受date参数,并返回日期的年份。请参阅YEAR()函数的语法:

YEAR(date);

YEAR()函数返回一个指定日期的年份值,范围为10009999,如果日期为零,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()函数,并给出了使用它的一些示例。

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

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

相关文章

MySQL协议.NET Core实现(一)

一个有技术追求的研发团对&#xff0c;无论使用什么框架、什么工具、什么语言&#xff0c;团队里应该有人有能力把控所使用框架、工具、语言的每一个核心功能的实现细节。团队里的每个成员应该根据自身所长挑选其中一块做深入研究&#xff0c;并把研究成果分享给团队&#xff0…

2018蓝桥杯省赛---java---C---7(缩位求和)

题目描述 问题描述在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。 比如&#xff1a;248 * 15 3720 把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是1位数&#xff0c;得 2 4 8 14 > 1 4 5; 1 …

龙芯linux内核,龙芯的linux kernel,内核开发与编译

在很久很久以前&#xff0c;linux被视为geek极客的玩具。自行升级Linux内核&#xff0c;对普通用户来说&#xff0c;简直是天方夜谭。曾经的曾经&#xff0c;升级内核需要很多纷繁复杂的步骤&#xff0c;也需要花费很多的时间。但是&#xff0c;现在不一样了。内核的安装可以方…

MySQL coalesce()函数

转载自 MySQL coalesce()函数 MySQL COALESCE函数介绍 下面说明了COALESCE函数语法&#xff1a; COALESCE(value1,value2,...);COALESCE函数需要许多参数&#xff0c;并返回第一个非NULL参数。如果所有参数都为NULL&#xff0c;则COALESCE函数返回NULL。 以下显示了使用CO…

2018蓝桥杯省赛---java---C---8(等腰三角形)

题目描述 问题描述本题目要求你在控制台输出一个由数字组成的等腰三角形。 具体的步骤是&#xff1a;先用1,2,3&#xff0c;…的自然数拼一个足够长的串 用这个串填充三角形的三条边。从上方顶点开始&#xff0c;逆时针填充。 比如&#xff0c;当三角形高度是8时&#xff1a;1…

Git,Git Flow,GitLab使用指南

高效利用一次蹲坑时间&#xff0c;看看如何使用Git Flow进行高效开发&#xff0c;什么才是Git提交的正确姿势&#xff0c;怎样使用GitLab进行Code Review&#xff1a; 使用Git Flow高效开发&#xff1b;Git提交正确姿势&#xff0c;Commit message编写指南&#xff1b;使用Git…

arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置

Linux下的arm-linux-gcc交叉编译环境安装安装arm-linux-gcc(1) 打开终端&#xff0c;使用sudo命令进入从超级管理员&#xff1a;sudo su输入超级管理员密码。(2) 使用cd命令进入桌面&#xff1a;cd Desktop(3)复制arm-linux-gcc-4.4.3.tar.gz安装包到Ubuntu桌面下面(4)打开终端…

MySQL greatest()和least()函数

转载自 MySQL greatest()和least()函数 MySQL GREATEST和LEAST函数介绍 GREATEST和LEAST函数都使用N个参数&#xff0c;并分别返回最大和最小值。下面说明GREATEST和LEAST函数的语法&#xff1a; GREATEST(value1, value2, ...); LEAST(value1,value2,...);参数可能具有混合…

环东风尚注注意事项

1.先对钱&#xff08;现金&#xff09;。 2.看美团和飞猪上的订单。 3.根据订单在订单表上做预订。 4.对本子上入住的人是否和电脑上的一致。 5.对房卡和电脑上的是否一致。 6.查看退宿的身份证是否已退。 退房&#xff1a; 1.先退钱 2.退身份证 3.退卡 开房&#xff1a; 1.收…

2019蓝桥杯省赛---java---C---1(求和)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int cnt 0;for (int i 1; i < 2019; i)if (check(i)) cnt i;System.out.print(cnt);}static boolean check(int n) {String an"";if (a.contains("2")…

使用EntityFrameworkCore实现Repository, UnitOfWork,支持MySQL分库分表

昨天&#xff08;星期五&#xff09;下班&#xff0c;19&#xff1a;00左右回到家&#xff0c;洗个澡&#xff0c;然后20&#xff1a;30左右开始写代码&#xff0c;写完代码之后&#xff0c;上床看了《生活大爆炸10季》17、18两集&#xff0c;发现没有更新到19集&#xff0c;瞄…

cs1.5 linux服务端,Linux下架设CS1.5服务器

所需文件&#xff1a;1、hlds_l_3110_full.bin2、cs_15_full.tar.gz3、engine_i386.so(据说这个东东可以免cdkey&#xff0c;可我不用也可免cdkey)把所有的文件都拷贝到/usr/cs目录下&#xff1a;# chmod x hlds_l_3110_full.bin# tar xzvf hlds_l_3110_full.tar.gz# tar xzvf …

MySQL isnull()函数基本指南

转载自 MySQL isnull()函数基本指南 MySQL ISNULL函数简介 ISNULL函数接受一个参数&#xff0c;并测试该参数是否为NULL。如果参数为NULL&#xff0c;则ISNULL函数返回1&#xff0c;否则返回0。 下面说明了ISNULL函数的语法&#xff1a; ISNULL(expr)请考虑以下示例&#…

ppt2010基础操作笔记

一、PPT2010的界面&#xff1a; 1.功能选项卡 2.大纲区 3.标题栏 4.备注页 5.状态栏 6.工作区 二、创建PPT演示文稿 1.开始–》PPT2010 2.在PPT里面新建–》文件–》新建–》样本模板–》选择模板。 三、PPT2010中的视图&#xff1a; 1.普通视图 2.大纲视图 3.幻灯…

2019蓝桥杯省赛---java---C---2(矩阵切割)

题目描述 代码实现 package TEST;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int max sc.nextInt();int min sc.nextInt();int sum 0, temp;while (max ! 0 && min ! 0) {if (max …

期待微软平台即服务技术Service Fabric 开源

微软的Azure Service Fabric的官方博客在3.24日发布了一篇博客 Service Fabric .NET SDK goes open source &#xff0c;介绍了社区呼声最高的Service Fabric开源的情况以及当前的情况&#xff0c;这次开源了Service Fabric的.NET SDK部分&#xff0c;主要是两个&#xff1a; …

java中input表单中的type=date返回类型【切记】

input表单中的type”date”返回类型为Date类型&#xff01; input表单中的type”date”返回类型为Date类型&#xff01; input表单中的type”date”返回类型为Date类型&#xff01; 重要的内容说三遍&#xff0c;今晚可算是及坑死我了&#xff0c;一直以为是String类型 &…

全自动安装 linux光盘,CentOS 7.1全自动安装光盘制作详解

安装系统的话&#xff0c;常用方式就是通过U盘&#xff0c;光盘&#xff0c;kickstart网络自动化安装&#xff0c;网络自动化安装固然好&#xff0c;但是有时候在现场做项目的话根本就没有kickstart环境&#xff0c;甚至连基本的网络建设都没有弄好&#xff0c;此时该如何安装系…

MySQL last_insert_id()函数

转载自 MySQL last_insert_id()函数 MySQL LAST_INSERT_ID函数简介 在数据库设计中&#xff0c;我们经常使用代理键使用AUTO_INCREMENT属性为主键列生成唯一的整数值。 当您将新行插入到具有AUTO_INCREMENT列的表中时&#xff0c;MySQL会自动生成一个唯一的整数&#xff0c…

2019蓝桥杯省赛---java---C---4(质数)

题目描述 代码实现 package TEST; public class Main {public static void main(String[] args) {int cnt 0;for (int i 2; ; i )if(check(i)){cnt ;if(cnt 2019){System.out.println(i);break;}}}public static boolean check(int n){//判断一个数是否为质数for (int i 2…