2060 年 和1970 年 >70是1900 <70 是2000
timestamp 字段:只要当前所在的记录被更新,该字段一定回自动更新当前时间。
select now()
select CURDATE();
select curtime();
select year(now()) 年;
select year(‘1998-1-1’) 年;
select year(hiredate) 年 from employees;
select month(now()) 月
select monthname(now()) 月;
select str_to_date(‘1998-3-2’,’%Y-%c-%d’) as out_put
实际例子: 查询入职日期为1992-4-3 的员工信息
select * from employee where hiredate = ’ 1992-4-3’ ;
select * from employee where hiredate = ’ 4-3 1992‘ ; 就找不到了==》需要进行转换
select * from employee where hiredate = str_to_date(‘4-3 1992’,’%c-%d %Y’);
select date_format(now(),’%y年%m月%d日’) as out_put
查询有奖金的员工名和入职日期(xx月/XX 日 XX年)
select last_name,date_format(hiredate,’%m月/%d日 %y年’) 入职日期
from employees where comnission_pct is not null;
1、获取当月的每天数据总量:
SELECT
count(1) AS 别名,
DAY(时间字段名) as 别名
FROM
表名
WHERE MONTH(时间字段名) = MONTH( NOW( ) )
GROUP BY DAY(时间字段名)
select count(*) ,day(create_time) day from order_master where month(create_time)= month(NOW()) group by day(create_time)
2、获取前月的每天数据总量:
SELECT
count(1) AS 别名,
DAY(时间字段名) as 别名
FROM
表名
WHERE MONTH(时间字段名) = MONTH( NOW( ) )-1
GROUP BY DAY(时间字段名)
3、获取去年的每月数据总量:
SELECT
count(1) AS 别名,
MONTH(时间字段名) as 别名
FROM
表名
WHERE YEAR(时间字段名 ) = YEAR( NOW( ) )-1
GROUP BY MONTH(时间字段名)
4、获取今年的每月数据总量:
SELECT
count(1) AS 别名,
MONTH(时间字段名) as 别名
FROM
表名
WHERE YEAR(时间字段名 ) = YEAR( NOW( ) )
GROUP BY MONTH(时间字段名)
Mysql中使用sql语句查询前一个天、前一周、前一月时间的方法
https://blog.csdn.net/YickreeSuen/article/details/79980446
前14天
在数据库总存的试varchar的时间例如;2019-11-18 01:42:08
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 14 DAY) <= date(时间字段名)
最近两周:
SELECT * FROM 表名 where date_sub(CURDATE(),INTERVAL (WEEKDAY(CURDATE()) +7) day) <= DATE(时间字段名)
(WEEKDAY(date) 返回 date 的星期索引(0 = Monday, 1 = Tuesday, … 6 = Sunday):
mysql> SELECT WEEKDAY(’1998-02-03 22:23:00’);
)
时间转化
时间戳转日期:
FROM_UNIXTIME(updatetime)
https://blog.csdn.net/qq_36614559/article/details/80093045
https://www.cnblogs.com/ltian123/p/11077901.html
日期转时间戳;
UNIX_TIMESTAMP(updatetime)
select *,UNIX_TIMESTAMP(create_time)from order_master
查毫秒差:
UNIX_TIMESTAMP(updatetime)-UNIX_TIMESTAMP(timestamp)
时间格式化:
date_format( timestamp, ‘%Y%m’ ));
DATE_FORMAT将传来的Date类型转为自己需要的格式,如%Y-%m-%d %H:%i:%s会将传来的startTime和endTime转为"yyyy-MM-dd HH:mm:ss"格式
select * from tableName a
where a.time between DATE_FORMAT(#{startTime},’%Y-%m-%d %H:%i:%s’) and DATE_FORMAT(#{endTime},’%Y-%m-%d %H:%i:%s’)
https://www.jianshu.com/p/593ace0424ff
注:
SELECT
id,
DATE_FORMAT(create_time, ‘%Y-%c-%e’)
FROM epc_mes_item
WHERE DATE_FORMAT(create_time, ‘%Y-%c-%d’) >= ‘2018-11-19’;
0查询’2020-01-10的数据
select * from order_master where DATE_FORMAT(create_time,’%Y-%m-%d’) = ‘2020-01-10’
查看 ‘2020-01-09’ 到 ‘2020-01-11’的数据
select * from order_master where DATE_FORMAT(create_time,’%Y-%m-%d’) between ‘2020-01-09’ and ‘2020-01-11’
==========================
需求:
写个sql 查询 smslog表 要有手机号 发送内容 插入时间 插入时间和更新时间的时间差以秒为单位 查询最近两星期的
sql:
select mobile,content,msgid,timestamp,updatetime,
UNIX_TIMESTAMP(updatetime)-UNIX_TIMESTAMP(timestamp) time from smslog where date_sub(CURDATE(),INTERVAL (WEEKDAY(CURDATE()) +7) day) <= DATE(timestamp) order by timestamp desc;