1. 程式人生 > >mysql 的時間操作函式

mysql 的時間操作函式

TIMESTAMPDIFF

TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。
說明:
返回日期或日期時間表達式datetime_expr1 和datetime_expr2 之間的整數差。其結果的單位由interval 引數給出。該引數必須是以下值的其中一個:

  1. FRAC_SECOND。表示間隔是毫秒
  2. SECOND。秒
  3. MINUTE。分鐘
  4. HOUR。小時
  5. DAY。天
  6. WEEK。星期
  7. MONTH。月
  8. QUARTER。季度
  9. YEAR。年
//關閉時間 和當前時間相差分鐘
TIMESTAMPDIFF(SECOND,closed_time,now()
)
< 180

TIMESTAMPADD

TIMESTAMPADD(interval,int_expr,datetime_expr)
將整型表示式int_expr 新增到日期或日期時間表達式 datetime_expr中。式中的interval和上文中列舉的取值是一樣的。

 mysql> select TIMESTAMPADD(MINUTE,8820,'2012-08-24 09:00:00');  
 // 將“2017-03-24 09:00:00“增加 8820 分鐘
 +-------------------------------------------------+   
 | TIMESTAMPADD(MINUTE,8820
,'2017-03-24 09:00:00') | +-------------------------------------------------+ | 2017-03-30 12:00:00 | +-------------------------------------------------+ 1 row in set (0.00 sec)

from_unixtime

from_unixtime函式 用於將Unix 時間戳格式化為日常的時間格式

date為需要處理的引數(該引數是Unix 時間戳),可以是欄位名,也可以直接是Unix 時間戳字串
後面的 ‘%Y%m%d’ 主要是將返回值格式化

mysql>SELECT FROM_UNIXTIME( 1195488000, '%Y%m%d' )    
->20071120  
mysql>SELECT FROM_UNIXTIME( 1195488000, '%Y年%m月%d' )   
->20071120  

UNIX_TIMESTAMP

UNIX_TIMESTAMP()是與之相對正好相反的時間函式 ,用於將字串轉化為時間戳
若無引數呼叫,則返回一個 Unix timestamp (‘1970-01-01 00:00:00’ GMT 之後的秒數) 作為無符號整數
例如:

mysql> SELECT UNIX_TIMESTAMP('2007-11-20') ;  
->1195488000  

DATE_FORMAT

DATE_FORMAT() 函式用於以不同的格式顯示日期/時間資料。

DATE_FORMAT(date,format)
//date 引數是合法的日期。format 規定日期/時間的輸出格式。

DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

結果類似:

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

mysql日期加減

date_add()

MySQL 為日期增加一個時間間隔:date_add()

set @dt = now();

select date_add(@dt, interval 1 day);   - 加1天

select date_add(@dt, interval 1 hour);   -加1小時

select date_add(@dt, interval 1 minute);    - 加1分鐘

select date_add(@dt, interval 1 second); -加1秒

select date_add(@dt, interval 1 microsecond);-加1毫秒

select date_add(@dt, interval 1 week);-加1周

select date_add(@dt, interval 1 month);-加1月

select date_add(@dt, interval 1 quarter);-加1季

select date_add(@dt, interval 1 year);-加1年

//SELECT @cdate := date_add(@cdate, INTERVAL -30 SECOND);-減去30秒
mysql> set @dt = '2009-09-09 12:12:33';

mysql>

mysql> select date_add(@dt, interval '01:15:30' hour_second);-加上1小時15分30秒

date_add(@dt, interval '01:15:30' hour_second)

結果:2009-09-09 13:28:03

/**
set @dt = now(); 也可以寫為 
select @dt:=now();

mysql 變數
1.使用者變數:以"@"開始,形式為"@變數名"
使用者變數跟mysql客戶端是繫結的,設定的變數,只對當前使用者使用的客戶端生效
2.全域性變數:定義時,以如下兩種形式出現,set GLOBAL 變數名  或者  set @@global.變數名 
對所有客戶端生效。只有具有super許可權才可以設定全域性變數

變數參考:http://www.cnblogs.com/wangtao_20/archive/2011/02/21/1959734.html
**/

date_sub()

MySQL 為日期減去一個時間間隔:date_sub();

MySQL date_sub() 日期時間函式 和date_add() 用法一致,不再贅述。

mysql 時間函式

YEAR(time)
返回time的年份

MONTH(time)
返回time的月份(範圍是1到12)

DAY(time)
返回time的日期(範圍是1到31)

HOUR(time)
返回time的小時(範圍是0到24)

MINUTE(time)
返回time的分鐘數(範圍是0到59)

SECOND(time)
返回time的秒數(範圍是0到59)

ROUND() 函式

ROUND(X,D)
此函式返回x舍入到最接近的整數。如果第二個引數,D有提供,則函式返回x四捨五入至第D位小數點。D必須是正數或全部右邊小數點的數字將被刪除。