Dec 3, 2011

Tổng hợp các hàm về date/time trong MySQL


NameDescription
ADDDATE()Add time values (intervals) to a date value
ADDTIME()Add time
CONVERT_TZ()Convert from one timezone to another
CURDATE()Return the current date
CURRENT_DATE(),CURRENT_DATESynonyms for CURDATE()
CURRENT_TIME(),CURRENT_TIMESynonyms for CURTIME()
CURRENT_TIMESTAMP(),CURRENT_TIMESTAMPSynonyms for NOW()
CURTIME()Return the current time
DATE_ADD()Add time values (intervals) to a date value
DATE_FORMAT()Format date as specified
DATE_SUB()Subtract a time value (interval) from a date
DATE()Extract the date part of a date or datetime expression
DATEDIFF()Subtract two dates
DAY()Synonym for DAYOFMONTH()
DAYNAME()Return the name of the weekday
DAYOFMONTH()Return the day of the month (0-31)
DAYOFWEEK()Return the weekday index of the argument
DAYOFYEAR()Return the day of the year (1-366)
EXTRACT()Extract part of a date
FROM_DAYS()Convert a day number to a date
FROM_UNIXTIME()Format UNIX timestamp as a date
GET_FORMAT()Return a date format string
HOUR()Extract the hour
LAST_DAYReturn the last day of the month for the argument
LOCALTIME(),LOCALTIMESynonym for NOW()
LOCALTIMESTAMP,LOCALTIMESTAMP()Synonym for NOW()
MAKEDATE()Create a date from the year and day of year
MAKETIMEMAKETIME()
MICROSECOND()Return the microseconds from argument
MINUTE()Return the minute from the argument
MONTH()Return the month from the date passed
MONTHNAME()Return the name of the month
NOW()Return the current date and time
PERIOD_ADD()Add a period to a year-month
PERIOD_DIFF()Return the number of months between periods
QUARTER()Return the quarter from a date argument
SEC_TO_TIME()Converts seconds to 'HH:MM:SS' format
SECOND()Return the second (0-59)
STR_TO_DATE()Convert a string to a date
SUBDATE()A synonym for DATE_SUB() when invoked with three arguments
SUBTIME()Subtract times
SYSDATE()Return the time at which the function executes
TIME_FORMAT()Format as time
TIME_TO_SEC()Return the argument converted to seconds
TIME()Extract the time portion of the expression passed
TIMEDIFF()Subtract time
TIMESTAMP()With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments
TIMESTAMPADD()Add an interval to a datetime expression
TIMESTAMPDIFF()Subtract an interval from a datetime expression
TO_DAYS()Return the date argument converted to days
TO_SECONDS()Return the date or datetime argument converted to seconds since Year 0
UNIX_TIMESTAMP()Return a UNIX timestamp
UTC_DATE()Return the current UTC date
UTC_TIME()Return the current UTC time
UTC_TIMESTAMP()Return the current UTC date and time
WEEK()Return the week number
WEEKDAY()Return the weekday index
WEEKOFYEAR()Return the calendar week of the date (0-53)
YEAR()Return the year
YEARWEEK()Return the year and week




NOW(): ngày hiện tại dạng yyyy-mm-dd h:m:s
ví dụ: SELECT NOW(); //kết quả: 2007-03-28 11:29:33

CURDATE(): ngày hiện tại dạng yyyy-mm-dd
ví dụ: SELECT CURDATE(); //kết quả: 2007-03-28

YEAR(): xác định năm từ 1 ngày cho trước
ví dụ: SELECT YEAR('2007-03-28 11:30:14');//kết quả: 2007

MONTH(): xác định tháng (1-12) từ 1 ngày cho trước
ví dụ: SELECT MONTH('2007-03-28 11:30:11') // kết quả: 3

MONTHNAME(): xác định tháng (January-December) từ 1 ngày cho trước
ví dụ: SELECT MONTH('2007-03-28 11:30:11')//kết quả: March

WEEKOFYEAR(): thứ tự của tuần trong năm
ví dụ: SELECT WEEKOFYEAR('200-03-28'); //kết quả: 13

WEEKDAY: số thứ tự của ngày trong tuần(0 = Monday, 6 = Sunday)
ví dụ: SELECT WEEKDAY('2007-03-28 12:23:50'); //kết quả: 2 (tương đương thứ 4)

DATE(): xác định chính ngày từ 1 biểu thức ngày
ví dụ: SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'

DATEDIFF(expr1,expr2): tính số ngày giữa 2 ngày expr1 và expr2, nếu số ngày >0 nghĩa là expr1>expr2 và ngược lại
Ví dụ: SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
-> -31

DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit): cộng(DATE_ADD) hoặc trừ(DATE_SUB) thêm vào ngày cho trước(date)
trong đó unit bao gồm các giá trị:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

ví dụ:
SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 SECOND);
-> '1998-01-01 00:00:00'
SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 DAY);
-> '1998-01-01 23:59:59'
SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
-> '1998-01-01 00:01:00'
SELECT DATE_SUB('1998-01-01 00:00:00',
-> INTERVAL '1 1:1:1' DAY_SECOND);
-> '1997-12-30 22:58:59'
SELECT DATE_ADD('1998-01-01 00:00:00',
-> INTERVAL '-1 10' DAY_HOUR);
-> '1997-12-30 14:00:00'
SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'
SELECT DATE_ADD('1992-12-31 23:59:59.000002',
-> INTERVAL '1.999999' SECOND_MICROSECOND);
-> '1993-01-01 00:00:01.000001'


ngoài ra ta có thể dùng cách sau để thay cho DATE_ADD và DATE_SUB:
date + INTERVAL expr unit <-> DATE_ADD(date, INTERVAL expr unit)
date - INTERVAL expr unit <-> DATE_SUB(date, INTERVAL expr unit)

DATE_FORMAT(date,): định dạng lại ngày trong mysql theo định dạng của format
ví dụ:
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
Các giá trị của format
%a : Sun,..,Sat
%b : Jan,..,Dec)
%c : Month, 0..12
%D : ngày 0th, 1st, 2nd, 3rd, …
%d : ngày 00..31
%e : ngày 0..31
%f : micro giây 000000..999999
%H : giờ (00..23)
%h : giờ (01..12)
%I : giờ (01..12)
%i : Phút (00..59)
%j : Ngày trong năm (001..366)
%k : giờ (0..23)
%l : giờ (1..12)
%M : Tháng(January..December)
%m : Tháng (00..12)
%p : AM hoặc PM
%r : Time, 12-hour (hh:mm:ss followed by AM or PM)
%S : Seconds (00..59)
%s : Seconds (00..59)
%T : Time, 24-hour (hh:mm:ss)
%U : Week (00..53), tuần bắt đầu bằng ngày Sunday
%u : Week (00..53), tuần bắt đầu bằng ngày Sunday,dùng với %X
%v : Week (01..53), tuần bắt đầu bằng ngày Monday,dùng với %x
%W : ngày trong tuần (Sunday..Saturday)
%w : ngày trong tuần (0=Sunday..6=Saturday)
%X : Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%x : Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
%Y : năm (4 ký tự)
%y : năm (2 ký tự: 2 số cuối)
%% : A literal ‘%’ character
%x : x, for any ‘x’ not listed above

DAY()
ví dụ:
SELECT DAY('2007-03-28');
-> 28

DAYNAME()
Ví dụ:
SELECT DAYNAME('1998-02-05');
-> 'Thursday'

DAYOFMONTH(date) : ngày trong tháng 0-31
Ví dụ: SELECT DAYOFMONTH('1998-02-03');
-> 3

DAYOFWEEK(date): ngày trong tuần (1 = Sunday, 2 = Monday, …, 7 = Saturday)
ví dụ: SELECT DAYOFWEEK('1998-02-03');
-> 3

DAYOFYEAR(date): ngày trong năm (1-366)
Ví dụ: SELECT DAYOFYEAR('1998-02-03');
-> 34

EXTRACT(unit FROM date): lấy đơn vị thời gian unit từ ngày date, với unit có các giá trị giống như unit của DATE_ADD và DATE_SUB
Ví dụ: SELECT EXTRACT(YEAR FROM '1999-07-02');
-> 1999
SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
-> 199907
SELECT EXTRACT(DAY_MINUTE FROM '1999-07-02 01:02:03');
-> 20102
SELECT EXTRACT(MICROSECOND FROM '2003-01-02 10:30:00.00123');
-> 123

FROM_DAYS(N): trả về dạng DATE từ 1 số nguyên
Ví dụ:
SELECT FROM_DAYS(729669);
-> '1997-10-07'
ADDDATE(date,INTERVAL expr unit) :giống như DATE_ADD(date,INTERVAL expr unit)

SUBDATE(date,INTERVAL expr unit) :giống như DATE_SUB(date,INTERVAL expr unit)

Trên đây là 1 số hàm dùng trong MySQL, ngoài ra MySQL còn hổ trợ rất nhiều hàm để xử lý date/time mong rằng qua bài viết này giúp được bạn phần nào trong việc xử lý ngày/tháng trong mysql

Ví dụ:
tính xem ngày đăng ký của thành viên đến nay đã được bao nhiêu ngày
- SELECT DATEIFF(field_date,NOW()) FROM

0 comments:

Post a Comment

Nam Le © 2014 - Designed by Templateism.com, Distributed By Templatelib