2018-08-30:MySQL时间函数整理
--创建字段默认当前时间(修改使用MODFY)
ALTER TABLE `table_name` ADD `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
--添加字段默认当前更新时间
ALTER TABLE `table_name` ADD `UpdateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
--查询当前表中前天的数据
SELECT * FROM tbl_name WHERE TO_DAYS(NOW())-TO_DAYS(createTime)<=2 AND TO_DAYS(NOW())-TO_DAYS(createTime)>1;
1. NOW()=CURDATE()+CURTIME();
2. DATE()函数返回日期或日期/时间表达式的日期部分。
语法:DATE(date):date 参数是合法的日期表达式或字段名。
3. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法:DATE_FORMAT(date,format)
当天:DATE_FORM(CURDETE(),'%Y-%M-%d %H:%i:%S');
4. DATE_SUB()函数从日期减去指定的时间间隔。
语法:DATE_SUB(date,INTERVAL expr type):
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。注意:type可以复合型的,比如 YEAR_MONTH。如果type不是复合型的,DATE_ADD和DATE_SUB其实可以通用,因为expr可以为一个负数
当月:DATE_FORM(DATE_SUB(CURDATE(),INTERVAL 0 MONTH),'%Y-%M-%d');
例子1:SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY)AS OrderPayDate FROM Orders;//给某个字段减去两天显示
例子2:SELECT DATE_ADD('2013-01-18',INTERVAL '1 2' YEAR_MONTH);
//结果:2014-03-18;当expr只有一个值,会给MONTH使用
5. EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
语法:EXTRACT(unit FROM date):date 参数是合法的日期表达式。unit 参数可以是下列的值:SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR;
6. DATEDIFF() 函数返回两个日期之间的天数。
语法:DATEDIFF(date1,date2):date1 和 date2 参数是合法的日期或日期/时间表达式。
注释:只有值的日期部分参与计算。date1 -date2 ,返回可以为负。
7.YEAR(date) ,返回date的年份,范围在1000到9999。
QUARTER(date) ,返回date一年中的季度,范围1到4。
MONTH(date) ,返回date的月份,范围1到12。
WEEK(date,first) :返回date的周数,范围在0到52。first=0,星期从星期天开始,first=1, 从星期一开始。
例子:SELECT WEEK('2017-11-05');//45(11.05是周日,算新的一周)
SELCT WEEK('2017-11-05',1);//44
HOUR(time) ,返回time的小时,范围是0到23。
MINUTE(time) ,返回time的分钟,范围是0到59。
SECOND(time) ,回来time的秒数,范围是0到59。
8. DAYOFWEEK(date) ,返回日期date的星期索引(1=星期天, ……7=星期六)。
WEEKDAY(date) ,返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
DAYOFMONTH(date) ,返回date的月份中日期,在1到31范围内。
DAYOFYEAR(date) ,返回date在一年中的日数, 在1到366范围内
9. PERIOD_ADD(P,N) ,增加N个月到阶段P(以格式YYMM或YYYYMM),以格式YYYYMM返回值。
PERIOD_DIFF(P1,P2) ,返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。
例子:SELECT PERIOD_ADD('201711',2);//201801
SELECT PERIOD_DIFF('201711','201702');//9
10. to_days函数:返回从0000年(公元1年)至当前日期的总天数
如果要查询当前表中昨天的数据那么
SELECT * FROM tbl_name WHERE TO_DAYS(NOW())-TO_DAYS(createTime)<=1;
前天的?那就是
SELECT * FROM tbl_name WHERE TO_DAYS(NOW())-TO_DAYS(createTime)<=2 AND TO_DAYS(NOW())-TO_DAYS(createTime)>1;
转载自https://www.cnblogs.com/goloving/p/7779040.html
https://blog.csdn.net/sinat_19569023/article/details/50417273
https://www.cnblogs.com/lhj588/p/4245719.html