MySQL date and time functions

Source: Internet
Author: User
For details about the valid format of MySQL date and time functions for each type of value range and the specified date and time value, see 7.3.6 date and time type.

Here is an example of using the date function. The following query selects all records. The value of date_col is within the last 30 days:

Mysql> SelectsomethingFROMtable

WhereTO_DAYS (NOW ()-TO_DAYS (date_col) <= 30;

DAYOFWEEK (date)

Returns the index of the week of the date (1 = Sunday, 2 = Monday ,...... 7 = Saturday ). These index values correspond to the ODBC standard.

Mysql> selectDAYOFWEEK ('2017-02-03 ');

-> 3

WEEKDAY (date)

Returns the week index of date (0 = Monday, 1 = Tuesday ,...... 6 = Sunday ).

Mysql> selectWEEKDAY ('2017-10-1997: 23: 00 ');

-> 5

Mysql> selectWEEKDAY ('2017-1997 ');

-> 2

DAYOFMONTH (date)

Returns the date of a month in the range of 1 to 31.

Mysql> selectDAYOFMONTH ('2017-02-03 ');

-> 3

DAYOFYEAR (date)

Returns the number of days in a year from 1 to 366.

Mysql> selectDAYOFYEAR ('2017-02-03 ');

-> 34

MONTH (date)

Returns the month of date, ranging from 1 to 12.

Mysql> selectMONTH ('2017-02-03 ');

-> 2

DAYNAME (date)

Returns the week name of date.

Mysql> selectDAYNAME ("1998-02-05 ");

-> 'Thursday'

MONTHNAME (date)

Returns the month name of date.

Mysql> selectMONTHNAME ("1998-02-05 ");

-> 'February'


QUARTER (date)

Returns the quarter of a year from date, ranging from 1 to 4.

Mysql> selectQUARTER ('98-04-01 ');

-> 2

WEEK (date)

WEEK (date, first)

If Sunday is the first day of a week, there is a single parameter that returns the number of weeks of the date, ranging from 0 to 52. Two parameter formats: WEEK () allows you to specify whether the WEEK starts on Sunday or Monday. If the second parameter is 0, the week starts from Sunday, and if the second parameter is 1, it starts from Monday.

Mysql> selectWEEK ('2017-02-20 ');

-> 7

Mysql> selectWEEK ('2017-02-20 ', 0 );

-> 7

Mysql> selectWEEK ('2017-02-20 ', 1 );

-> 8

YEAR (date)

Returns the year of date, ranging from 1000 to 9999.

Mysql> selectYEAR ('98-02-03 ');

-> 1998

HOUR (time)

Returns the hour of time, ranging from 0 to 23.


Mysql> selectHOUR ('10: 05: 03 ');

-> 10

MINUTE (time)

Returns the minute of time, ranging from 0 to 59.

Mysql> selectMINUTE ('98-02-0310: 05: 03 ');

-> 5

SECOND (time)

The number of seconds for the return time, ranging from 0 to 59.

Mysql> selectSECOND ('10: 05: 03 ');

-> 3

PERIOD_ADD (P, N)

Add N months to phase P (in the format of YYMM or YYYYMM ). Return value in the format of YYYYMM. Note that the phase parameter P is not a date value.

Mysql> selectPERIOD_ADD (9801,2 );

-> 199803

PERIOD_DIFF (P1, P2)

Returns the number of months between period P1 and P2. P1 and P2 should be in the format of YYMM or YYYYMM. Note that the period parameters P1 and P2 are not date values.


Mysql> selectPERIOD_DIFF (9802,199703 );

-> 11

DATE_ADD (date, INTERVALexprtype)

DATE_SUB (date, INTERVALexprtype)

ADDDATE (date, INTERVALexprtype)

SUBDATE (date, INTERVALexprtype)

These functions perform date operations. For MySQL3.22, they are new. ADDDATE () and SUBDATE () are synonyms of DATE_ADD () and DATE_SUB.

In MySQL3.23, you can use + and-instead of DATE_ADD () and DATE_SUB (). (See the example) date is a DATETIME or DATE value that specifies the start date. expr is an expression that specifies the interval value added to the start DATE or subtracted from the start date. expr is a string; it can start with a "-" to indicate the negative interval. Type is a keyword that specifies how the expression should be interpreted. The EXTRACT (typeFROMdate) function returns the "type" interval from the date. The following table shows how the type and expr parameters are associated: the type value indicates the expected expr format.

SECOND SECONDS

MINUTE MINUTES

HOUR time HOURS

DAY DAYS

MONTH-MONTH MONTHS

YEAR YEARS

MINUTE_SECOND MINUTES and SECONDS "MINUTES: SECONDS"

HOUR_MINUTE hour and minute "HOURS: MINUTES"

DAY_HOUR and hour "DAYSHOURS"

YEAR_MONTH and month "YEARS-MONTHS"

HOUR_SECOND hour, minute, "HOURS: MINUTES: SECONDS"

DAY_MINUTE day, hour, minute "DAYSHOURS: MINUTES"

DAY_SECOND day, hour, minute, second "DAYSHOURS: MINUTES: SECONDS"

MySQL allows any punctuation separator in the expr format. It indicates that the recommended delimiter is displayed. If the date parameter is a DATE value and your calculation only contains the YEAR, MONTH, and DAY sections (that is, there is no time section), the result is a DATE value. Otherwise, the result is a DATETIME Value.

Mysql> Select "1997-12-3123: 59: 59" + INTERVAL1SECOND;

-> 1998-01-0100:00:00

> Mysql> SelectINTERVAL1DAY + "1997-12-31 ";


-> 1998-01-01

Mysql> Select "1998-01-01"-INTERVAL1SECOND;

-> 1997 to 12-3123: 59: 59

Mysql> SelectDATE_ADD ("1997-12-3123: 59: 59 ",

INTERVAL1SECOND );

-> 1998-01-0100:00:00

Mysql> SelectDATE_ADD ("1997-12-3123: 59: 59 ",

INTERVAL1DAY );

-> 1998-01-012:59:59

Mysql> SelectDATE_ADD ("1997-12-3123: 59: 59 ",

INTERVAL "1:1" MINUTE_SECOND );

-> 1998-01-0100:0

Mysql> SelectDATE_SUB ("1998-01-0100:00:00 ",

INTERVAL "" DAY_SECOND );

-> 1997-12-3022: 58: 59

Mysql> SelectDATE_ADD ("1998-01-0100:00:00 ",

INTERVAL "-110" DAY_HOUR );

-> 1997 to 12-3014: 00: 00

Mysql> SelectDATE_SUB ("1998-01-02", INTERVAL31DAY );

-> 1997-12-02

Mysql> SelectEXTRACT (YEARFROM "maid ");

-> 1999

Mysql> SelectEXTRACT (YEAR_MONTHFROM "1999-07-0201 ");

-> 199907

Mysql> SelectEXTRACT (DAY_MINUTEFROM "1999-07-0201 ");

-> 20102


If you specify an interval value that is too short (excluding the expected interval of the type keyword), MySQL assumes that you have saved the leftmost portion of the interval value. For example, if you specify a type of DAY_SECOND, the value of expr is expected to be one day, hour, minute, and second. If you specify a value like "", MySQL assumes that the days and hours are lost and the value represents minutes and seconds. In other words, "" DAY_SECOND is interpreted as it is equivalent to "" MINUTE_SECOND, this interpretation of MySQL's TIME value indicates that the elapsed TIME is not as a one-day TIME. If you use an incorrect date, the result is NULL. If you increase MONTH, YEAR_MONTH, or YEAR and the result date is greater than the maximum number of days of the new MONTH, the day is adjusted by the maximum number of days of the new moon.

Mysql> selectDATE_ADD ('2017-01-30 ', Interval1month );

-> 1998-02-28

Note: In the previous example, the INTERVAL and type keywords are not case sensitive.

TO_DAYS (date)

Returns the number of days (from 0 years ).

Mysql> selectTO_DAYS (950501 );

-> 728779

Mysql> selectTO_DAYS ('2017-10-07 ');

-> 729669

TO_DAYS () is not intended to be used to use the value before the occurrence of the glipro calendars (1582.

FROM_DAYS (N)

Returns a DATE value for the number of days N.

Mysql> selectFROM_DAYS (729669 );

-> '2017-10-07'

TO_DAYS () is not intended to be used to use the value before the occurrence of the glipro calendars (1582.

DATE_FORMAT (date, format)

Format the date value based on the format string. The following modifier can be used in the format string: % M month name (January ...... December)

% W name of the week (Sunday ...... Saturday)


% D indicates the date of the month with an English prefix (1st, 2nd, 3rd, and so on .)

% Y year, number, 4 digits

% Y year, number, 2 digits

% A abbreviated name of the week (Sun ...... Sat)

% D number of days in the month (00 ...... 31)

% E number of days in the month (0 ...... 31)

% M month, number (01 ...... 12)

% C month, number (1 ...... 12)

% B abbreviated month name (Jan ...... Dec)

% J days in a year (001 ...... 366)

% H Hour (00 ...... 23)

% K hour (0 ...... 23)

% H Hour (01 ...... 12)

% I hour (01 ...... 12)

% L hour (1 ...... 12)

% I minute, number (00 ...... 59)

% R time, 12 hours (hh: mm: ss [AP] M)

% T time, 24 hours (hh: mm: ss)

% S seconds (00 ...... 59)

% S seconds (00 ...... 59)

% PAM or PM

% W days in a week (0 = Sunday ...... 6 = Saturday)

% U week (0 ...... 52). Sunday is the first day of the week.

% U week (0 ...... 52) Monday is the first day of the week.

% A text "% ".

All other characters are not interpreted and copied to the result.

Mysql> selectDATE_FORMAT ('2017-10-1997: 23: 00', '% W % M % Y ');

-> 'Saturdayoctober1997'

Mysql> selectDATE_FORMAT ('2017-10-1997: 23: 00', '% H: % I: % S ');

-> '22: 23: 00'

Mysql> selectDATE_FORMAT ('2017-10-1997: 23: 00 ',

'% D % y % a % d % m % B % J ');


-> '4th97sat0410oct277'

Mysql> selectDATE_FORMAT ('2017-10-1997: 23: 00 ',

'% H % k % I % r % T % S % W ');

-> '2014: 23: 00PM22: 23: 8080'

In MySQL3.23, % is required before the format modifier. In earlier MySQL versions, % is optional.


TIME_FORMAT (time, format)

This is used like the preceding DATE_FORMAT () function, but the format string can only contain format modifiers for processing hours, minutes, and seconds.

Other modifiers generate a NULL value or 0.

CURDATE ()

CURRENT_DATE

Returns today's date value in 'yyyy-MM-DD 'or YYYYMMDD format, depending on whether the function is used in a string or numeric context.

Mysql> selectCURDATE ();

-> '2017-12-15'

Mysql> selectCURDATE () + 0;

-> 19971215

CURTIME ()

CURRENT_TIME

Returns the current time value in 'hh: MM: SS' or HHMMSS format, depending on whether the function is used in a string or in the context of a number.

Mysql> selectCURTIME ();

-> '23: 50: 26'

Mysql> selectCURTIME () + 0;

-> 235026

NOW ()

SYSDATE ()

CURRENT_TIMESTAMP

Returns the current date and time in 'yyyy-MM-DDHH: MM: SS' or YYYYMMDDHHMMSS format, depending on whether the function is in a string or in a number

The context is used.

Mysql> selectNOW ();

-> '2017-12-1997: 50: 26'

Mysql> selectNOW () + 0;

-> 19971215235026

UNIX_TIMESTAMP ()

UNIX_TIMESTAMP (date)

If no parameter is called, a Unix timestamp (in seconds starting from '2017-01-0100:00:00' GMT) is returned ). If UNIX_TIMESTAMP () is called with a date parameter, it returns the second value starting from '2017-01-0100:00:00' GMT. Date can be a number of a DATE string, a DATETIME string, a TIMESTAMP, or a local time in YYMMDD or YYYYMMDD format.

Mysql> selectUNIX_TIMESTAMP ();

-> 882226357

Mysql> selectUNIX_TIMESTAMP ('2017-10-1997: 23: 00 ');

-> 875996580

When UNIX_TIMESTAMP is used in a TIMESTAMP column, the function accepts the value directly without the implicit "string-to-unix-timestamp" transformation.

FROM_UNIXTIME (unix_timestamp)

Returns the value represented by the unix_timestamp parameter in 'yyyy-MM-DDHH: MM: SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or number context.

Mysql> selectFROM_UNIXTIME (875996580 );

-> '2017-10-1997: 23: 00'

Mysql> selectFROM_UNIXTIME (875996580) + 0;

-> 19971004222300

FROM_UNIXTIME (unix_timestamp, format)

Returns a string representing the Unix time Mark, formatted according to the format string. Format can contain the same modifier as the entries listed by the DATE_FORMAT () function.

Mysql> selectFROM_UNIXTIME (UNIX _
TIMESTAMP (),


'% Y % D % M % h: % I: % s % X ');

-> '199723rddecember03: 43: 30x'

SEC_TO_TIME (seconds)

Returns the seconds parameter, which is converted to hour, minute, and second. The value is formatted in 'hh: MM: SS' or HHMMSS, depending on whether the function is used in a string or a number context.

Mysql> selectSEC_TO_TIME (2378 );

-> '00: 39: 38'

Mysql> selectSEC_TO_TIME (2378) + 0;


-> 3938

TIME_TO_SEC (time)

Returns the time parameter, which is converted to seconds.

Mysql> selectTIME_TO_SEC ('22: 23: 00 ');

-> 80580

Mysql> selectTIME_TO_SEC ('00: 39: 38 ');

-> 2378

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.