mysql的日期時間函式小彙總(2)

2021-09-30 11:16:43 字數 4078 閱讀 8877

period_diff(p1,p2)

返回週期p1和

p2 之間的月份數。p1和p2 的格式應該為

yymm

或yyyymm

。注意週期引數

p1和p2不是日期值。

mysql> select period_diff(9802,199703);

-> 11

datediff(expr,expr2)

datediff()

返回起始時間

expr

和結束時間expr2之間的天數。expr和expr2為日期或

date-and-time

表示式。計算中只用到這些值的日期部分。

mysql> select datediff('1997-12-31 23:59:59','1997-12-30');

-> 1

mysql> select datediff('1997-11-30 23:59:59','1997-12-31');

-> -31

timediff(expr,expr2)

timediff()

返回起始時間

expr

和結束時間expr2之間的時間。

expr

和expr2 為時間或

date-and-time

表示式,

兩個的型別必須一樣。

mysql> select timediff('2000:01:01 00:00:00',

-> '2000:01:01 00:00:00.000001');

-> '-00:00:00.000001'

timestampdiff

(interval, datetime_expr1, datetime_expr2)

返回日期或日期時間表示式datetime_expr1和datetime_expr2the 之間的整數差。其結果的單位由interval引數給出。interval的法定值同

timestampadd()

函式說明中所列出的相同。

mysql> select timestampdiff(month,'2003-02-01','2003-05-01');

-> 3

mysql> select timestampdiff(year,'2002-05-01','2001-01-01');

-> -1

dayname(date)

返回date對應的工作日名稱,如『周四』。

dayofweek(date)

返回date (1 =

週日, 2 =

周一, ..., 7 =週六)

對應的工作日索引。這些索引值符合

odbc

標準。

weekday

(date)

返回date (0 =

周一, 1 =

周二, ... 6 =週日)

對應的工作日索引

weekday index for

mysql> select weekday('1998-02-03 22:23:00');

-> 1

mysql> select weekday('1997-11-05');

-> 2

weekofyear

(date)

將該日期的陽曆週以數字形式返回,範圍是從1到

53。它是乙個相容度函式,相當於

week(date,3)。

mysql> select weekofyear('1998-02-20');

-> 8

last_day(date)

獲取乙個日期或日期時間值,返回該月最後一天對應的值。若引數無效,則返回

null。

mysql> select last_day('2003-02-05');

-> '2003-02-28'

monthname(date)

返回date對應月份的全名。

mysql> select monthname('1998-02-05');

-> 'february '

quarter

(date)

返回date對應的一年中的季度值,範圍是從1到

4。mysql> select quarter('98-04-01');

-> 2

week

(date[,mode])

該函式返回date對應的星期數。

week()

的雙引數形式允許你指定該星期是否起始於週日或周一,

以及返回值的範圍是否為從0到

53或從1到

53。若

mode

引數被省略,則使用

default_week_format

系統自變數的值。

以下表說明了mode引數的工作過程:d

第一天mode

工作日範圍

week 1 為第一周 ...0

週日 0-53

本年度中有乙個週日 1

周一0-53

本年度中有

3天以上 2

週日1-53

本年度中有乙個週日 3

周一1-53

本年度中有

3天以上 4

週日0-53

本年度中有

3天以上 5

周一0-53

本年度中有乙個周一 6

週日1-53

本年度中有

3天以上 7

周一1-53

本年度中有乙個周一

mysql> select week('1998-02-20');

-> 7

mysql> select week('1998-02-20',0);

-> 7

mysql> select week('1998-02-20',1);

-> 8

mysql> select week('1998-12-31',1);

-> 53

注意,假如有乙個日期位於前一年的最後一周,

若你不使用2、

3、6或

7作為mode引數選擇,則

mysql返回0

: mysql> select year('2000-01-01'), week('2000-01-01',0);

-> 2000, 0

有人或許會提出意見,認為

mysql

對於week()

函式應該返回

52,原因是給定的日期實際上發生在

1999

年的第52

周。我們決定返回

0作為代替的原因是我們希望該函式能返回

「給定年份的星期數

」。這使得

week()

函式在同其它從日期中抽取日期部分的函式結合時的使用更加可靠。

假如你更希望所計算的關於年份的結果包括給定日期所在周的第一天,則應使用0、

2、5或

7 作為mode引數選擇。

mysql> select week('2000-01-01',2);

-> 52

作為選擇,可使用

yearweek()函式:

mysql> select yearweek('2000-01-01');

-> 199952

mysql> select mid(yearweek('2000-01-01'),5,2);

-> '52'

yearweek

(date),

yearweek(date,start)

返回乙個日期對應的年或周。start引數的工作同

start

引數對week()

的工作相同。結果中的年份可以和該年的第一周和最後一周對應的日期引數有所不同。

mysql> select yearweek('1987-01-01');

-> 198653

注意,週數和

week()

函式隊可選引數0或

1可能會返回的

(0) w

有所不同,原因是此時

week()

返回給定年份的語境中的周。

-> '1997-10-07'

出處:

mysql日期函式彙總 mysql日期函式彙總

一 當前時間獲取 1.now 獲得當前日期 時間 2.sysdate 獲得當前日期 時間 3.current timestamp,current timestamp 獲得當前時間戳 二 日期轉換函式 時間轉換函式 1.date format date,format time format time,...

mysql與oracle的日期 時間函式小結

本文的日期 時間全部格式化為 2016 01 01 01 01 01 形式 monitor time為資料庫表字段 日期 時間轉字串函式 to char t.monitor time,yyyy mm dd hh24 mi ss as monitortime 字串轉日期 時間函式 to date 20...

mysql與oracle的日期 時間函式小結

本文的日期 時間全部格式化為 2016 01 01 01 01 01 形式 monitor time為資料庫表字段 日期 時間轉字串函式 to char t.monitor time,yyyy mm dd hh24 mi ss as monitortime 字串轉日期 時間函式 to date 20...