SQL教程(四)简单实例学习:时间函数(一)基础入门级

news/2024/7/24 12:41:23 标签: sql, 数据库, 学习


目录

一、🌎SQL 简介

1.1 📜SQL 是什么?

1.2 📜SQL 能做什么?

1.3 📜SQL 是一种标准 - 但是...

1.4 📜在您的网站中使用 SQL

1.4 📜RDBMS

1.5 📜请记住...

1.6 📜SQL 语句后面的分号?

1.7 📜一些最重要的 SQL 命令

二、📚不断学习

2.1 📘使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间

2.2 📘使用 DATE()、TIME() 函数提取日期和时间

3.1 查询课程表中课程的创建日期

2.3 📘使用 EXTRACT() 函数提取指定的时间信息

2.4 📘使用 DATE_FORMAT() 格式化输出日期

4.1 DATE_FORMAT() 用法

4.2 DATE_FORMAT() 实例

三、🥇Summary

获取源码?私信?关注?点赞?收藏?


SQL 是用于访问和处理数据库的标准的计算机语言。

在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。


一、🌎SQL 简介


SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。


1.1 📜SQL 是什么?

  • SQL 指结构化查询语言,全称是 Structured Query Language。
  • SQL 让您可以访问和处理数据库,包括数据插入、查询、更新和删除。
  • SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

1.2 📜SQL 能做什么?


1.3 📜SQL 是一种标准 - 但是...

虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。

然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。


1.4 📜在您的网站中使用 SQL

要创建一个显示数据库中数据的网站,您需要:

  • RDBMS 数据库程序(比如 MS Access、SQL Server、MySQL)
  • 使用服务器端脚本语言,比如 PHP 或 ASP
  • 使用 SQL 来获取您想要的数据
  • 使用 HTML / CSS

1.4 📜RDBMS

RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。

RDBMS 中的数据存储在被称为表的数据库对象中。

表是相关的数据项的集合,它由列和行组成。


1.5 📜请记住...

  • SQL 对大小写不敏感:SELECT 与 select 是相同的。

1.6 📜SQL 语句后面的分号?

某些数据库系统要求在每条 SQL 语句的末端使用分号。

分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

在本教程中,我们将在每条 SQL 语句的末端使用分号。


1.7 📜一些最重要的 SQL 命令

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

二、📚不断学习

2.1 📘使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间

1. 使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间

学到这一节我有一个问题想问问大家,你们平时都是怎么样子获取时间的呢?是不是通过手表、手机、电脑等设备了解到的,那么你们有没有想过在在我们 SQL 中是怎么样获得时间的呢?

和其他的语言一样,我们的 SQL 语言也有着属于我们自己的获取时间的方式,接下来就让我带领大家一起来学习一下 SQL 语言是怎么样获取时间的吧。

在 SQL 中,我们可以通过使用 NOW()CURDATE()CURTIME() 来获取当前的时间

  • NOW() 可以用来返回当前日期和时间 格式:YYYY-MM-DD hh:mm:ss
  • CURDATE() 可以用来返回当前日期 格式:YYYY-MM-DD
  • CURTIME() 可以用来返回当前时间 格式:hh:mm:ss

在使用 NOW() 和 CURTIME() 时,如果要精确的秒以后的时间的话,可以在()中加数字,加多少,就表示精确到秒后多少位

比如 NOW(3) 就是精确到毫秒,表示为: 2021-03-31 15:27:20.645

👇我们可以通过下面的示例来感受一下 NOW () 、CURDATE () 、 CURTIME () 的用法

使用 NOW() 、 CURDATE() 、CURTIME() 函数查询当前日期与时间,并用 current_datetime 、current_datecurrent_time 作为结果集列名。

 
1mysql> SELECT NOW() AS `current_datetime`,
2    -> CURDATE() AS `current_date`,
3    -> CURTIME() AS `current_time`;
4+---------------------+--------------+--------------+
5| current_datetime    | current_date | current_time |
6+---------------------+--------------+--------------+
7| 2021-03-25 16:16:30 | 2021-03-25   | 16:16:30     |
8+---------------------+--------------+--------------+
91 row in set

通过上面的示例我们可以看出 NOW() 、 CURDATE() 、CURTIME() 这三个函数有着相似处,也有着一些不同。在实际的案例中,我们可以根据不同的情况,运用不同的函数来达到自己目的。


👇我们可以通过下面的实例来感受一下 NOW () 的用法。

使用 NOW() 向记录表 records 中插入当前的时间(精确到毫秒)

 
1mysql> INSERT INTO `records` VALUES (NOW(3));
2Query OK, 1 row affected
3
4mysql> SELECT `now_time` FROM `records`;
5+-------------------------+
6| now_time                |
7+-------------------------+
8| 2021-03-31 15:31:49.091 |
9+-------------------------+
102 rows in set

🔔 请通过下面NOW () 实例——向表中插入当前时间(精确到毫秒),去实操一下吧!

请编写 SQL 语句,向记录表 records 中插入当前的日期。

表定义: records (记录表)

列名类型注释
now_timedate现在时间
  • 插入记录字段类型应该和表定义字段类型相符。

样例

表内容: records (记录表)

数据表中并没有数据,now_time 的类型为 date

在运行你的 SQL 语句之后,我们会执行一些语句,对插入的数据与系统的当前日期进行比较,并将比较的结果返回

返回:

answer
true

若返回为 true 则表明插入的当前时间正确

若返回为 false 则表明插入的当前时间错误

sql">insert into records(now_time)
VALUES(now());

2.2 📘使用 DATE()、TIME() 函数提取日期和时间

通过上一节的学习,我们已经学会了如何在 SQL 中获取当前的时间了,这一节我们将会学习如何将时间中的代表日期的元素和代表时间的元素从时间中提取出来。

就以上一节我们获得的 current_datetime 来说吧,我们已经知道了“现在”的时间是 '2021-03-25 16:16:30',但是在实际运用中,不需要这么的精确,只需要其中的日期或者时间,那么我们应该怎么做呢。或许你会想到再用 CURDATE() 或者CURTIME() 把需要的日期或者时间获取出来不就行了吗。但是你有没有想过时间是会变的, CURDATE() 或者CURTIME() 都是获取当前的,而在某些情况下,时间是固定的,那么我们应该怎么办呢?接下来让我带领大家一起来学习一下如何将时间中的代表日期的元素和代表时间的元素从时间中提取出来。

👇我们可以通过下面的示例来感受一下 DATE () 、TIME () 的用法

使用 DATE()TIME() 函数分别将 '2021-03-25 16:16:30' 这组数据中的日期于时间提取出来,并用 date 、time 作为结果集列名。

 
1SELECT DATE('2021-03-25 16:16:30') AS `date`,TIME('2021-03-25 16:16:30')  AS `time`;
2+------------+----------+
3| date       | time     |
4+------------+----------+
5| 2021-03-25 | 16:16:30 |
6+------------+----------+
71 row in set

通过上面的示例,你是否能理解 DATE()TIME() 的用法呢?那么让我来考考你吧。在不使用 CURDATE() 函数的情况下,通过这两节我们学到的时间函数方面的知识,将多个函数进行组合的形式来达到相同的效果呢?

如果可以的话说明你已经初步理解了这两节讲到的知识了,那么让我们一起来看看到底应该怎么做呢。

首先我们可以通过 NOW() 获得当前的时间与日期,再使用 DATE() 函数将其中的日期提取出来,具体的用法是这样子的 DATE(NOW()),我们在把他与 CURDATE() 比较一下吧!

 
1mysql> SELECT DATE(NOW()),CURDATE();
2+-------------+------------+
3| DATE(NOW()) | CURDATE()  |
4+-------------+------------+
5| 2021-03-25  | 2021-03-25 |
6+-------------+------------+
71 row in set

👇我们可以通过下面的实例来感受一下 DATE () 的用法。

3.1 查询课程表中课程的创建日期

使用 DATE() 函数从课程表 courses 中查询课程的名字 name 和课程创建时间 created_at,从课程创建时间 created_at 中提取出创建课程的日期,并加以格式化,用 created_date 作为结果集列名。

 
1mysql> SELECT `name`, DATE(`created_at`) AS `created_date`
2    -> FROM `courses`;
3+-------------------------+--------------+
4| name                    | created_date |
5+-------------------------+--------------+
6| Advanced Algorithms     | 2020-06-01   |
7| System Design           | 2020-07-18   |
8| Django                  | 2020-02-29   |
9| Web                     | 2020-04-22   |
10| Big Data                | 2020-09-11   |
11| Artificial Intelligence | 2018-05-13   |
12| Java P6+                | 2019-01-19   |
13| Data Analysis           | 2019-07-12   |
14| Object Oriented Design  | 2020-08-08   |
15| Dynamic Programming     | 2018-08-18   |
16+-------------------------+--------------+
1710 rows in set

🔔 请通过下面DATE () 实例——查询课程表中课程的创建日期,去实操一下吧!


2.3 📘使用 EXTRACT() 函数提取指定的时间信息


前面我们已经学习了 DATE 函数和 TIME 函数,明白 DATE 返回日期, TIME 返回时间,如果我只想知道年份的信息或者小时的信息,那么该怎么解决呢?这时,我们就可以使用 EXTRACT() 函数来解决问题。

EXTRACT() 函数用于返回日期/时间的单独部分,如 YEAR (年)、MONTH (月)、DAY (日)、HOUR (小时)、MINUTE (分钟)、 SECOND (秒)。

语法

 
1SELECT EXTRACT(unit FROM date)
2FROM `table`

其中:

table 是表格名

date 参数是合法的日期表达式。

unit 参数是需要返回的时间部分,如 YEAR 、MONTH 、 DAY 、 HOUR 、MINUTE 、SECOND 等。

在一般情况下,EXTRACT(unit FROM date) 与 unit() 的结果相同。

👇我们可以通过下面的实例来感受一下 EXTRACT() 函数 的用法。

使用 EXTRACT() 函数,从课程表 courses 中查询课程的名字和创建时间的小时数,并为 created_at 起别名为 created_hour 。

 
1mysql> SELECT `name`, EXTRACT(HOUR FROM `created_at`) AS `created_hour`
2FROM `courses`;
3+-------------------------+--------------+
4| name                    | created_hour |
5+-------------------------+--------------+
6| Advanced Algorithms     | 9            |
7| System Design           | 10           |
8| Django                  | 12           |
9| Web                     | 13           |
10| Big Data                | 16           |
11| Artificial Intelligence | 18           |
12| Java P6+                | 13           |
13| Data Analysis           | 13           |
14| Object Oriented Design  | 13           |
15| Dynamic Programming     | 20           |
16+-------------------------+--------------+
1710 row in set

🔔 请通过下面EXTRACT() 实例——查询所有课程创建时间的小时,去实操一下吧!

请编写 SQL 语句,从课程表 courses 中查询所有课程的课程名称( name )和课程创建时间( created_at )的小时数,将提取小时数的列名起别名为 created_hour

表定义:courses(课程表)

列名类型注释
idint unsigned主键
namevarchar课程名称
student_countint学生总数
created_atdatetime创建时间
teacher_idint讲师 id
  • 查询返回列名需要与样例输出的列名大小写一致。
  • 如果输入数据中存在 NULL 值,则返回 NULL。

样例

样例一

表内容 : courses

idnamestudent_countcreated_atteacher_id
1Senior Algorithm8802020-06-01 09:10:124
2System Design13502020-07-18 10:11:123
3Django7802020-02-29 12:10:123
4Web3402020-04-22 13:01:124
5Big Data7002020-09-11 16:01:121
6Artificial Intelligence16602018-05-13 18:12:303
7Java P6+7802019-01-19 13:31:123
8Data Analysis5002019-07-12 13:01:121
10Object Oriented Design3002020-08-08 13:01:124
12Dynamic Programming20002018-08-18 20:01:121

在运行你的 SQL 语句之后,表应返回:

namecreated_hour
Senior Algorithm9
System Design10
Django12
Web13
Big Data16
Artificial Intelligence18
Java P6+13
Data Analysis13
Object Oriented Design13
Dynamic Programming20

样例二

表内容 : courses

idnamestudent_countcreated_atteacher_id
1NULL880NULL4
2IDE300NULL4
3NULL20002018-08-18 20:01:121

在运行你的 SQL 语句之后,表应返回:

namecreated_hour
NULLNULL
IDENULL
NULL12

样例二中数值如果有 NULL 值,则会返回 NULL 值。

sql">select name,extract(hour from created_at) as created_hour
from courses;


2.4 📘使用 DATE_FORMAT() 格式化输出日期

4.1 DATE_FORMAT() 用法

我们在 SQL 中使用 DATE_FORMAT() 方法来格式化输出 date/time。
需要注意的是 DATE_FORMAT() 函数返回的是字符串格式。

语法

 
1SELECT DATE_FORMAT(date,format);

其中

date 一个有效日期。

format 是 date/time 的输出格式。


4.2 DATE_FORMAT() 实例

👇我们可以通过下面的实例来感受一下 DATE_FORMAT() 的用法。

假如我们要得到 courses 表课程创建时间的月份,日期,年份,星期。
我们可以使用下面的 SQL 语句:

 
1SELECT DATE_FORMAT(`created_at`, '%Y %m') AS `DATE_FORMAT`
2FROM `courses`;

其中 %m 表示月份,%d 表示日期,%Y 表示年份,%w 表示星期。

执行输出结果:

 
1mysql> SELECT DATE_FORMAT(`created_at`, '%Y %m') AS `DATE_FORMAT`
2    -> FROM `courses`;
3+-------------+
4| DATE_FORMAT |
5+-------------+
6| 2020 06     |
7| 2020 07     |
8| 2020 02     |
9| 2020 04     |
10| 2020 09     |
11| 2018 05     |
12| 2019 01     |
13| 2019 07     |
14| 2020 08     |
15| 2018 08     |
16+-------------+
1710 rows in set (0.01 sec)

🔔 请通过下面DATA_FORMAT 实例——查询课程创建日期按‘年 月’显示,去实操一下吧!

请编写 SQL 语句,查询 courses 表,查询课程创建时间,按照 ’yyyy-MM-dd HH:mm:ss’ 的格式返回结果,返回列名显示为 DATE_FORMAT

表定义: courses(课程表)

列名类型注释
idint unsigned主键
namevarchar课程名称
student_countint学生总数
created_atdate课程创建时间
teacher_idint讲师 id

查询返回列名需要与样例输出的列名大小写一致
输出格式为 yyyy-MM-dd HH:mm:ss,而不是 yyyy年-MM月-dd日 HH时:mm分:ss秒

样例

样例一:

表内容:courses

idnamestudent_countcreated_atteacher_id
1Senior Algorithm8802020-6-1 09:03:124
2System Design13502020-7-18 10:03:123
3Django7802020-2-29 12:03:123
4Web3402020-4-22 13:03:124
5Big Data7002020-9-11 16:03:121
6Artificial Intelligence16602018-5-13 18:03:123
7Java P6+7802019-1-19 13:03:123
8Data Analysis5002019-7-12 13:03:121
10Object Oriented Design3002020-8-8 13:03:124
12Dynamic Programming20002018-8-18 20:03:121

在运行你的 SQL 语句之后,表应返回:

DATE_FORMAT
2020-06-01 09:03:12
2020-07-18 10:03:12
2020-02-29 12:03:12
2020-04-22 13:03:12
2020-09-11 16:03:12
2018-05-13 18:03:12
2019-01-19 13:03:12
2019-07-12 13:03:12
2020-08-08 13:03:12
2018-08-18 20:03:12

样例二:

表内容:courses

idnamestudent_countcreated_atteacher_id
1Senior Algorithm880null4
2System Design1350null3
3Django780null3
4Web340null4
5Big Data700null1
6Artificial Intelligence1660null3
7Java P6+780null3
8Data Analysis500null1
10Object Oriented Design300null4
12Dynamic Programming2000null1

在运行你的 SQL 语句之后,表应返回:

DATE_FORMAT
null
null
null
null
null
null
null
null
null
null

样例二中课程表中没有课程创建时间,所以统计结果为空。

sql">select date_format(created_at,'%Y-%m-%d %H:%i:%s') as DATE_FORMAT
from courses;


三、🥇Summary

已经好长时间没有更新(一个月),其实这段时间,怎么说,就也是……继续努力吧!!!

最近开始重新学习SQL了,有时候也不知道应该学点什么,需要学点什么,也并没有参加什么比赛,主要是比较菜😓,希望可以自己沉淀一段时间,💪

上述内容就是此次 SQL教程(四)简单实例学习:时间函数(一)基础入门级基础入门级 的全部内容了,感谢大家的支持,相信在很多方面存在着不足乃至错误,希望可以得到大家的指正。🙇‍(ง •_•)ง

调整自己。不忘来时路,努力前行,找到前进的方向。

2023年第三十八期,希望得到大家的喜欢🙇‍

希望大家有好的意见或者建议,欢迎私信,一起加油


以上就是本篇文章的全部内容了

 ~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!

3.以上内容技术相关问题可以相互学习,可 关 注 ↓公 Z 号 获取更多源码 !
 

获取源码?私信?关注?点赞?收藏?

👍+✏️+⭐️+🙇‍


http://www.niftyadmin.cn/n/344242.html

相关文章

Ubuntu22 k8s 1.27.1 安装及集群搭建教学(2023.5.16 k8s 最新版本教学,只看这一篇就够了哦!保姆级教程!不行你来找我!)

Ubuntu22 k8s 1.27.1 安装及集群搭建教学(2023.5.16 k8s 最新版,只看这一篇就够了哦!保姆级教程!!不行你来找我!) 温馨提示请仔细阅读:❤️❤️❤️❤️❤️❤️❤️❤️ 1. 由于新版…

通过cloudflare创建openai api的代理

一、前言 首先你要有一个域名,其次这个域名要托管到cloudfare,所以: 直接在cloudfare购买域名,方便省事!找其他免费域名,再托管到cloudfare,本着一分钱不花的目的,这里提供一个顶级免费公益域…

我读故我在:《文凭社会》读后感

现在正是一年一度的答辩季,朋友圈有各种毕业季的苦尽甘来,也有更多的彷徨无助。就业,似乎越来越卷。 新来的实习生。本硕985,还有海外留学经历。这一届00后真的越来越强大了,让人汗颜。 虽然,每天干的活也不…

elementUI之tag标签讲解

目录 组件属性介绍&#xff1a; 将所有标签在同一个数据字段中发送给后端 该组件实现了一个标签页的添加和删除功能 组件属性介绍&#xff1a; <el-tag> 标签渲染了用于展示标签页标签的元素<el-input> 标签渲染了用于输入新标签页名称的元素<el-button> …

[CTF/网络安全] 攻防世界 baby_web 解题详析

[CTF/网络安全] 攻防世界 baby_web 解题详析 index.html & default.htmlindex.phpHTTP 302总结 题目描述&#xff1a;想想初始页面是哪个 index.html & default.html 初始页面的文件名一般为 index.html 或 default.html。这两个文件名都是 Web 服务器默认的首选文件…

setContentHuggingPriority和setContentCompressionResistancePriority的使用

需求&#xff1a; 两个label并排显示&#xff0c;文字内容由服务器返回&#xff0c;label宽度以文字内容自适应&#xff0c;label之间间距大于等于10. 需要考虑以下情况&#xff1a; 当两个label的宽度和 < 屏幕宽度时&#xff0c;各自设置约束&#xff0c;无需处理&#…

一文读懂大语言模型

以ChatGPT为代表的大语言模型被很多人认为是新一轮科技革命的起点&#xff0c;本文旨在通过概念性介绍&#xff0c;让普通人能够尽可能理解人工智能以及大语言模型的基本概念&#xff0c;从而了解这些技术能做以及不能做什么。原文: A Very Gentle Introduction to Large Langu…

ES6之Module:export、import

文章目录 前言一、export命令1.export2.export default&#xff08;默认暴露&#xff09; 二、import命令1.通用导入方式2.解析赋值导入方式 三、结果总结 前言 ES6之前&#xff0c;JavaScript语言一直没有模块&#xff08;Module&#xff09;体系&#xff0c;无法将一个大型程…