作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主
文章目录
- sql
- ADDDATE()
- ADDTIME()
- ADDTIME()
- curdate()
- CURRENT_DATE()
- CURRENT_TIME()
- CURRENT_TIMESTAMP()
- curtime()
- date()
- DATEDIFF()
- date_add()
- DATE_FORMAT()
- date_sub()
- day()
- DAYNAME()
- DAYOFMONTH()
- DAYOFWEEK()
- DAYOFYEAR()
- EXTRACT()
- FROM_DAYS()
- hour()
- LAST_DAY()
- LOCALTIME()
- LOCALTIMESTAMP()
- makedate()
- maketime()
- MICROSECOND()
- minute()
- MONTHNAME()
- MONTH()
- now()
- PERIOD_ADD()
- period_diff()
- quarter()
- second()
- SEC_TO_TIME()
- STR_TO_DATE()
- subdate()
- subtime()
- sysdate()
- time()
- time_format()
- time_to_sec()
- timediff()
- timestamp()
- TIMESTAMPDIFF()
- to_days()
- week()
- WEEKDAY()
- WEEKOFYEAR()
- year()
- YEARWEEK()
sql
-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- 主机: localhost
-- 生成日期: 2022-11-06 18:14:31
-- 服务器版本: 5.7.26
-- PHP 版本: 7.3.4
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- 数据库: `a`
--
-- --------------------------------------------------------
--
-- 表的结构 `customers`
--
CREATE TABLE `customers` (
`id` int(11) NOT NULL COMMENT '主键id',
`name` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT '名字',
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '时间'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- 转存表中的数据 `customers`
--
INSERT INTO `customers` (`id`, `name`, `time`) VALUES
(1, '12346789', '2022-11-06 08:16:11');
--
-- 转储表的索引
--
--
-- 表的索引 `customers`
--
ALTER TABLE `customers`
ADD PRIMARY KEY (`id`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `customers`
--
ALTER TABLE `customers`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', AUTO_INCREMENT=2;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
ADDDATE()
SELECT ADDDATE("2017-06-15",INTERVAL 10 DAY);
解析:增加10天到这个日期上2017-06-15

ADDTIME()
SELECT ADDTIME("2011-11-11 11:11:11",5);
解析:增加五秒钟到第一个参数的日期上"2011-11-11 11:11:11"

ADDTIME()
SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5");
解析:增加 2 小时, 10 分钟, 5 秒到第一个参数的日期上.

curdate()
解析:显示当前日期

CURRENT_DATE()
解析:显示当前日期

CURRENT_TIME()
解析:显示当前时间

CURRENT_TIMESTAMP()
SELECT CURRENT_TIMESTAMP();
解析:显示当前日期+时间

curtime()
解析:显示当前时间

date()
SELECT DATE("2017-06-15");
解析:从日期或日期时间表达式中提取日期值

DATEDIFF()
SELECT DATEDIFF('2001-01-01','2001-02-02')
解析:计算日期 d1->d2 之间相隔的天数

date_add()
SELECT date_add("2017-06-15",INTERVAL 10 DAY);
解析:加10天到第一个参数日期上

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 15 MINUTE);
解析:加15分钟到第一个参数日期上

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 HOUR);
解析:加-3小时到第一个参数日期上

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 MONTH);
解析:加-3个月到第一个参数的日期上

DATE_FORMAT()
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
解析:以年-月-日这种格式输出。%r代码am还是pm。am表示凌晨和上午,pm表示下午和晚上。(0:00-12:00)。

SELECT DATE_FORMAT('2011-11-11 23:11:11','%Y-%m-%d %r')
解析:以年-月-日这种格式输出。%r代码am还是pm。am表示凌晨和上午,pm表示下午和晚上。12:01-24:00)。

date_sub()
SELECT time,date_sub(time,INTERVAL 2 DAY) as timedate from customers;
解析:date_sub(time,INTERVAL 2 DAY)的意思是当前time字段时间减去两天.就成了2022-11-04 16:16:11.原本是2022-11-06 16:16:11

day()
SELECT day("2017-06-15");
解析:输出日,不输出年 月

DAYNAME()
SELECT DAYNAME('2011-11-11 11:11:11');
看这个日期是星期几呢?2011-11-11 11:11:11

DAYOFMONTH()
SELECT DAYOFMONTH('2011-11-11 11:11:11');
输出这个日期是2011-11-11 11:11:11是11月的第几天

DAYOFWEEK()
SELECT DAYOFWEEK('2011-11-11 11:11:11');
解析:这个(2011-11-11 11:11:11)日期 day今天是星期几,1 星期日,2 星期一,以此类推

DAYOFYEAR()
SELECT DAYOFYEAR('2011-11-11 11:11:11')
解析:计算2011年11月11日这个日期是2011年的第几天

EXTRACT()
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:33:11')
计算2011-11-11 11:33:11这个日期时间的分钟时多少呢?

FROM_DAYS()
解析:计算从 0000 年 1 月 1 日开始 1111天后的日期

hour()
解析: t 中的小时值。小时1,2分钟,3秒

LAST_DAY()
SELECT LAST_DAY("2017-06-20");
解析:给定日期的那一月份(6月份)的最后一天

LOCALTIME()
解析:输出当前日期和时间

LOCALTIMESTAMP()
解析:返回当前日期和时间

makedate()
SELECT makedate(2017, 3);
解析:2017年第三天是什么日期

maketime()
SELECT maketime(11,35,4);
解析:组合时间,参数分别为第一个参数:小时、第二个参数:分钟、第三个参数:秒

MICROSECOND()
SELECT MICROSECOND("2017-06-20 09:34:00.000023");
解析:日期参数所对应的微秒数

minute()
解析:输出分钟。第一个参数小时。第二个参数分钟。第三个参数秒

MONTHNAME()
SELECT MONTHNAME('2011-11-11 11:11:11');
解析:输出月的信息(英文)

MONTH()
SELECT MONTH('2011-11-11 11:11:11');
解析:返回日期中的月份值,1 到 12

now()
解析:当前日期和时间

PERIOD_ADD()
SELECT PERIOD_ADD(201703,5);
解析:第一个参数意思:2017年3月增加五个月

period_diff()
SELECT period_diff(201710, 201703);
解析:第一个参数2017年10月减去第二个参数2017年3月的值

quarter()
SELECT quarter('2011-11-11 11:11:11');
解析:输出日期时间是第几季节,返回 1 到 4.代表春夏秋冬四个季节.

second()
解析:输出秒

SEC_TO_TIME()
解析:将以秒为单位的时间转换为时分秒的格式

STR_TO_DATE()
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
解析:将字符串转变为日期

subdate()
SELECT subdate('2011-11-11 11:11:11', 1);
解析:第一个参数的日期时间减去第二个参数的天数的日期

subtime()
SELECT subtime('2011-11-11 11:11:11', 5);
解析:第一个参数的日期时间减去第二个参数的秒数:5

sysdate()
解析:输出当前日期和时间

time()
SELECT time("2011-11-11 19:30:10");
解析:输出时间部分,不输出日期部分

time_format()
SELECT time_format('11:11:11','%r');
解析:看第一个参数的时间是am还是pm

time_to_sec()
SELECT time_to_sec('1:12:00');
解析:将时间转换为秒

timediff()
SELECT timediff("13:10:11", "13:10:10");
解析:第一个参数的时间减去第二个参数的时间

timestamp()
SELECT timestamp("2017-07-23", "13:10:11");
解析:单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和

SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
解析:有2个参数时,将参数加和

TIMESTAMPDIFF()
SELECT TIMESTAMPDIFF(DAY,'2003-02-01','2003-05-01');
解析: // 计算两个时间相隔多少天

SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
解析:// 计算两个时间相隔多少月

SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
解析: 计算两个时间相隔多少年

to_days()
SELECT to_days('0001-01-01 01:01:01');
解析:计算日期距离 0000 年 1 月 1 日的天数

week()
SELECT week('2011-11-11 11:11:11');
解析:计算日期是本年(2011)的第几个星期,范围是 0 到 53

WEEKDAY()
SELECT WEEKDAY("2017-06-15");
解析:日期是星期几,0 表示星期一,1 表示星期二。。。。。

WEEKOFYEAR()
SELECT WEEKOFYEAR('2011-11-11 11:11:11')
解析:计算日期 是本年的第几个星期,范围是 0 到 53

year()
SELECT YEAR("2017-06-15");
解析:输出年份

YEARWEEK()
SELECT YEARWEEK("2017-06-15");
解析:输出年份及第几周(0到53)
