Các định dạng ngày tháng năm cần nắm trong MySQL:

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:30

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)

Kết luận

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.
  3. Nguồn tham khảo Internet.

Nongdanit.info
Hàm xử lý date time trong Mysql