mysql日期时间

日期类型

  • date “1000-01-01”到“9999-12-31” 3字节
  • time “-838:59:59”到“838:59:59” 3字节
  • datetime “1000-01-01 00:00:00” 到“9999-12-31 23:59:59” 8字节
  • timestamp 19700101000000 到2037 年的某个时刻 4字节

当前时间

  • now() 获得当前日期+时间(date + time) 执行开始时值就得到了
  • sysdate() 获得当前日期+时间(date + time) 执行时动态得到值
  • current_timestamp 获得当前时间戳函数
  • current_timestamp() 获得当前时间戳函数
  • unix_timestamp() Unix 时间戳

转换函数

  • date_format(date,format) 日期转换为字符串
  • time_format(time,format) 时间转换为字符串
  • str_to_date 字符串转换为日期/时间
  • 日期时间格式
    • %S, %s 两位数字形式的秒( 00,01, . . ., 59)
    • %i 两位数字形式的分( 00,01, . . ., 59)
    • %H 两位数字形式的小时,24 小时(00,01, . . ., 23)
    • %h, %I 两位数字形式的小时,12 小时(01,02, . . ., 12)
    • %k 数字形式的小时,24 小时(0,1, . . ., 23)
    • %l 数字形式的小时,12 小时(1, 2, . . ., 12)
    • %T 24 小时的时间形式(hh : mm : s s)
    • %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
    • %p AM 或P M
    • %W 一周中每一天的名称( Sunday, Monday, . . ., Saturday)
    • %a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)
    • %d 两位数字表示月中的天数( 00, 01, . . ., 31)
    • %e 数字形式表示月中的天数( 1, 2, . . ., 31)
    • %D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)
    • %w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, . . ., 6=Saturday)
    • %j 以三位数字表示年中的天数( 001, 002, . . ., 366)
    • % U 周(0, 1, 52),其中Sunday 为周中的第一天
    • %u 周(0, 1, 52),其中Monday 为周中的第一天
    • %M 月名(January, February, . . ., December)
    • %b 缩写的月名( January, February, . . ., December)
    • %m 两位数字表示的月份( 01, 02, . . ., 12)
    • %c 数字表示的月份( 1, 2, . . ., 12)
    • %Y 四位数字表示的年份
    • %y 两位数字表示的年份
    • %% 直接值“%”
  • to_days(date) 日期转化天数
  • from_days(days) 天数转化日期
  • time_to_sec(time) 时间转换秒函数 如 select time_to_sec(‘01:00:05’); – 3605
  • sec_to_time(seconds) 秒转换时间函数
  • makdedate(year,dayofyear) 拼凑日期函数 如 select makedate(2001,31); – ‘2001-01-31’
  • maketime(hour,minute,second) 拼凑时间函数 如 select maketime(12,15,30); – ‘12:15:30’
  • unix_timestamp(date) 日期转换Unix 时间戳函数
  • from_unixtime(unix_timestamp) Unix 时间戳转换日期函数
  • from_unixtime(unix_timestamp,format) Unix 时间戳转换日期函数

计算函数

  • date_add(date,INTERVAL expr type) 为日期增加一个时间间隔 如 select date_add(‘2013-01-18’, interval ‘1 2’ YEAR_MONTH); –2014-03-18
    • MICROSECOND 间隔单位:毫秒
    • SECOND 间隔单位:秒
    • MINUTE 间隔单位:分钟
    • HOUR 间隔单位:小时
    • DAY 间隔单位:天
    • WEEK 间隔单位:星期
    • MONTH 间隔单位:月
    • QUARTER 间隔单位:季度
    • YEAR 间隔单位:年
    • SECOND_MICROSECOND 复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒
    • MINUTE_MICROSECOND 复合型,间隔单位:分、毫秒
    • MINUTE_SECOND 复合型,间隔单位:分、秒
    • HOUR_MICROSECOND 复合型,间隔单位:小时、毫秒
    • HOUR_SECOND 复合型,间隔单位:小时、秒
    • HOUR_MINUTE 复合型,间隔单位:小时分
    • DAY_MICROSECOND 复合型,间隔单位:天、毫秒
    • DAY_SECOND 复合型,间隔单位:天、秒
    • DAY_MINUTE 复合型,间隔单位:天、分
    • DAY_HOUR 复合型,间隔单位:天、小时
    • YEAR_MONTH 复合型,间隔单位:年、月
  • date_sub() 为日期减去一个时间间隔
  • adddate(), addtime() 可以用 date_add() 来替代
  • datediff(date1,date2) 日期相减函数 两个日期相减 date1 - date2,返回天数。
  • timediff(time1,time2) 两个日期相减 time1 - time2,返回 time 差值 如 select timediff(‘2008-08-08 08:08:08’, ‘2008-08-08 00:00:00’); – 08:08:08
  • timestamp(date) date to timestamp 如 select timestamp(‘2008-08-08’); – 2008-08-08 00:00:00
  • timestamp(dt,time) 日期加个时间 如 如 select timestamp(‘2008-08-08 08:00:00’, ‘10 01:01:01’); – 2008-08-18 09:01:01
  • timestampadd(unit,interval,datetime_expr) 添加知道类型时间 如 select timestampadd(day, 1, ‘2008-08-08 08:00:00’); – 2008-08-09 08:00:00
  • timestampdiff(unit,datetime_expr1,datetime_expr2) 日期相减函数 如 select timestampdiff(year,’2002-05-01’,’2001-01-01’); – -1
  • convert_tz(dt,from_tz,to_tz) 时区(timezone)转换函数 如 select convert_tz(‘2008-08-08 12:00:00’, ‘+08:00’, ‘+00:00’); – 2008-08-08 04:00:00