sql时间区间查询

CREATE TABLE `t_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userId` varchar(16) NOT NULL ,
  `userName` varchar(16) NOT NULL ,
  `code` varchar(16) NOT NULL,
  `address` varchar(16) NOT NULL,
  `startTime` varchar(8) DEFAULT NULL ,
  `updateTime` datetime NOT NULL ,
  PRIMARY KEY (`id`),
  KEY `apptDate` (`apptDate`)
) ENGINE=InnoDB AUTO_INCREMENT=2769143 DEFAULT CHARSET=utf8 COMMENT='测试';

1、查看某一区间的记录

SELECT  COUNT(1) count FROM  t_test WHERE  startTime  BETWEEN  '2019-8-1' AND '2019-8-15';

SELECT  COUNT(1) count FROM  t_test WHERE  startTime  >=  '2019-8-1' AND startTime  <='2019-8-15';

SELECT  COUNT(1)  num  FROM  t_test WHERE  startTime  >='2019-07-15 00:00:00'  AND  startTime  <='2019-07-30 24:00:00';

 2、DATE_FORMATE 格式化时间

SELECT DATE_FORMAT(NOW(),"%Y-%m-%d %h:%i:%s");

   查询结果:2019-08-20 04:25:17

3、常用的时间查询函数

#获取年份
SELECT YEAR(NOW()) AS 'year';

#获取月份
SELECT MONTH(NOW()) AS 'mouth';

#获取日期
SELECT DAY(NOW()) AS 'day' ;

#获取当前日期
SELECT  CURRENT_DATE;

#获取当前时间
SELECT  CURRENT_TIME

#获取指定日期是一年的的第几天
SELECT  DAYOFYEAR(NOW());

#获取指定日期是一个月中的第几天
SELECT DAYOFMONTH(NOW());

#获取指定日期是一周的第几天
SELECT DAYOFWEEK(NOW()) AS 'week';

#求两个时间的相差日期
SELECT DATEDIFF(NOW(),'2019-07-01');

#求两个日期以时间戳的时间差
SELECT  TIMESTAMPDIFF(SECOND ,'2020-08-13 17:23:00','2020-08-13 17:50:00');

#查询指定时间的上一个月份
SELECT  PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT('2019-08-31','%Y%m'));

#与指定时间相差5年
SELECT  DATE_SUB(NOW(),INTERVAL 5 YEAR);

#与指定时间相差5天
SELECT  DATE_SUB(NOW(),INTERVAL 5 DAY);

#与指定时间相差5小时
SELECT  DATE_SUB(NOW(),INTERVAL 5 HOUR);

#指定时间加n天
SELECT  DATE_ADD(NOW(),INTERVAL -7 DAY)

#字符串转为日期
SELECT STR_TO_DATE('2019-01-01 00:00:00', '%Y-%m-%d %H:%i:%s');

#指定时间加上30分钟
SELECT  DATE_FORMAT(DATE_ADD(STR_TO_DATE(CONCAT('2019-09-10',' ','08:20:00'), '%Y-%m-%d %H:%i:%s'),INTERVAL 30 MINUTE),'%H:%i');

#指定字符串转时间戳
SELECT UNIX_TIMESTAMP(CONCAT(DATE(NOW()),' 10:10:50'))*1000 

你可能感兴趣的:(JavaWeb,sql)