Mysql版本:5.7
1.建立一个测试表:
CREATE TABLE `test` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(150) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
2.插入测试数据
insert into `test`(`id`,`name`,`date`) values (1,'laolee','1993-12-11');
insert into `test`(`id`,`name`,`date`) values (2,'laozhou','2017-02-15');
insert into `test`(`id`,`name`,`date`) values (3,'kitty','2017-03-07');
insert into `test`(`id`,`name`,`date`) values (4,'lucy','2017-02-12');
insert into `test`(`id`,`name`,`date`) values (5,'amy','2017-02-11');
3.日期相关的函数演示
3.1.now() : 查看当前时间
command: select now() as now
3.2.dayofyear(date):查看date在 当年中是第几天.
command: select dayofyear(now()) (现在是本年的第几天。2017-03-14 是第2017年的第73天)
3.3.CURRENT_TIMESTAMP():当前时间和now()一样
command:select CURRENT_TIMESTAMP()
3.4.CURDATE():返回当前日期yyyy-MM-dd格式
command:select CURDATE();
3.5.TO_DAYS(date):给定一个日期,返回一个天数,从0000-01-01开始
command:SELECT TO_DAYS('0000-01-01')
COMMAND:SELECT TO_DAYS(NOW());
3.6.date_format(date,format):日期换为字符串,用于以不同的格式显示日期/时间数据,
date 参数是合法的日期。format 规定日期/时间的输出格式。
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
EG:SELECT DATE_FORMAT(NOW(),'%Y-%m-%d')
EG:select DATE_FORMAT(NOW(),'%Y-%m-%d %k:%i:%s');
示例:查询test表中从现在起一个月以内的记录
SELECT * FROM test WHERE TO_DAYS(CURDATE()) - TO_DAYS(DATE) <= 30