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

你可能感兴趣的:(2018-08-30:MySQL时间函数整理)