SQL的基本知识

1.获取当前时间的前一个小时

mysql中有个时间数据类型是:TIMESTAMP,

它储存的格式为:2016-12-29 14:49:48

JS 可以通过下列函数把时间转换成上面格式进行储存!

1 function formatDate(now) { 
2     var year=now.getFullYear(); 
3     var month=now.getMonth()+1; 
4     var date=now.getDate(); 
5     var hour=now.getHours(); 
6     var minute=now.getMinutes(); 
7     var second=now.getSeconds(); 
8     return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; 
9 } 

现在的问题是:我想获取当前时间的前一个小时,或者前一分钟的TIMESTAMP的数据格式:

SUBDATE(now(),interval 1 hour)

如果是前一分钟,hour修改成minute, 一天为day,

我想获取当前时间的后一个小时,那么函数为:ADDDATE

获取当前时间函数可以是:select now(); 也可以是:

select current_timestamp;

获取当天的记录:

select * from hera.d2_verifycode where type = @type AND 
                    codekey = @codekey and codevalue= @codevalue AND state='valid' AND 
                    Date(send_time) = CURDATE()

2.DISTINCT语句

  在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

 3.CURRENT_TIMESTAMP数据结构

 CURRENT_TIMESTAMP,是当前mysql的时间,设置之后,插入数据时,会自动打上当前的时间戳。

 alter table d2_verifycode MODIFY  COLUMN send_time  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

另外Extra也有这个属性,如:on update CURRENT_TIMESTAMP类型

4.获取当天的数据

select * from table_1 where send_time>=CURDATE() and send_time< ADDDATE(CURDATE(),interval 1 day);

5.ifNull的用法

select ifnull(sum(favor_amt),0)   
//如果 favor_amt为null,则 used为0,否则为sum(favor_amt)
used from boss.m5_favor_logs 
where userid=@userid
原文地址:https://www.cnblogs.com/liuyinlei/p/6233238.html