您的当前位置:首页正文

MySQL字符串函数、日期时间函数

2023-11-09 来源:好兔宠物网

CHAR_LENGTH(str)

解释:返回值为字符串str的长度,计算的单位为字符(一个中文也算一个字符)

举例:

技术分享

如果是查询已知表格里的字段长度,可以这样写:

技术分享

2、FORMAT:

FORMAT(X,D)

解释:将数字X的格式写为‘#,###,###.##‘,以四舍五入的方式保留小数点后D位,并将结果以字符串的形式返回。若D为0, 则返回结果不带有小数点,或不含小数部分。

举例:

技术分享

3、INSERT:替换的方式插入

INSERT (str,pos,len,newstr)

解释:返回字符串str,从原str的pos位置开始,用字符串newstr来替换,替换的长度为len。

如果pos超过字符串长度,则返回值为原始字符串。假如len的长度超过后面字符串的长度,则从位置pos开始替换到字符串的结尾即可。

四个参数中若任何一个参数为的值为null,则整个函数的返回值为NULL。

举例:将smyh001替换为smyh002

技术分享

4、INSTR:查找子字符串的位置

INSTR(str,substr)

解释:返回字符串str中首次出现子字符串substr的位置。

举例:

技术分享技术分享技术分享

5、LEFT/RIGHT:字符串截取

  • 左截取:
  • LEFT(str,len)

    解释:返回字符串str中,从左边开始算起的,前len个字符。

  • 右截取:
  • RIGHT(str,len)

    解释:返回字符串str中,从右边开始算起的,前len个字符。

    6、LENGTH:求字符串长度(以字节为单位)

    LENGTH(str)

    解释:返回值为字符串str的长度,单位为字节。一个多字节字符算作多字节。这意味着对于一个包含五个2字节字符的字符串,LENGTH()的返回值为10,而CHAR_LENGTH()的返回值则为5。

    注:

  • GBK  编码中,一个中文字符是2个字节。
  • UTF-8编码中,一个中文字符是3个字节,一个英文字符是2个字节。
  • 7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义):

  • 去掉左边的空格:
  • LTRIM(str)

    解释:返回字符串str,其引导空格字符被删除。

  • 去掉中间的空格:
  • RTRIM(str)

    解释:返回字符串str,其结尾空格字符被删除。

  • 自定义去空格:
  • TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) 

    注:大括号和中括号里面的参数为可选项,如果全部都加上的话,默认为参数both。

    解释:将原字符串str去掉空格返回。只去开头(leading)的空格,只去结尾(trailng)的空格,或者同时去掉(both)开头和结尾的空格都行。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。

    TRIM([remstr FROM] str)

    解释:remstr关键字的作用是去掉指定字符。 即所有包含remstr的前缀和/或后缀将被删除。未指定情况下,即删除空格。

    官方文档的举例:

    技术分享

    8、STRCMP:判断字符串是否相等

    STRCMP(expr1,expr2)

    解释:判断两个字符串是否相等。若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1;其它情况返回1。功能和比较器类似。

    注:字符串的大小是按照ANSI编码来比较的。

    举例:

    技术分享

    9、CONCAT:字符串拼接

    CONCAT(str1,str2,...)

    解释:返回结果为连将str1、str2···拼接之后产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。括号里可能有一个或多个参数。 

    如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任意一个二进制字符串,则结果为一个二进制字符串。一个数字参数将自动转化为与之相等的二进制字符串格式。

    若要避免这种情况二进制的情况出现,可使用显式类型 cast(str),将二进制的字符串转换为非二进制字符串。例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col)

    举例:(navicat编辑器会自动将二进制字符串转换为非二进制字符串)

    技术分享

    10、SUBSTRING:字符串截取

    SUBSTRING(str,pos)SUBSTRING(str FROM pos)SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len) 

    解释:不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。

    使用FROM的格式为标准SQL语法。

    也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos字符(也就是说,pos为正时,从左边算起;pos为负时,从右边算起)。 

    官方文档举例如下:

    技术分享

     

    二、常见日期时间函数:

  • 1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH
  • 2、WEEKDAY
  • 3、YEAR、QUARTER、MONTH、
  • 4、HOUR、MINUTE、SECOND
  • 5、TO DAYS、FROM DAYS    
  • 6、CURDATE、CURTIME、NOW   获取当前时间
  • 1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH

  • 求星期几:(一周中的第几天) 
  • DAYOFWEEK(date)

    解释:返回date(1=周日,2=周一, ...,7=周六)对应的工作日索引。即:date对应的范围是1至7。

  • 求一年中的某天是第几天:(一年中的第几天)
  • DAYOFYEAR(date)

    返回date对应的一年中的天数,范围是从1到366。

  • 求一个月中的某天是第几天:(一个月的第几天)
  • DAYOFMONTH(date)

    返回date对应的该月日期,范围是从1到31。注:DAY(date) 和DAYOFMONTH(date)的含义相同。

    举例:

    技术分享

    技术分享

    技术分享

    技术分享

    2、WEEKDAY:

  • 求星期几:(一周的第几天)
  • WEEKDAY(date)

    解释:返回date(0 = 周一, 1 = 周二, ... 6 = 周日)对应的工作日索引。即:date对应的范围是0至6。

    注:DAYOFWEEK(date)和WEEKDAY(date)的功能相同,唯一的区别在于date对应的取值范围。

    3、 YEAR、QUARTER、MONTH

  • 求年份:
  • YEAR(date)

    解释:返回date对应的年份,范围是从1000到9999。

  • 求季度:
  • QUARTER(date)

    解释:返回date对应的一年中的季度值,范围是从1到4。

  • 求月份:(该月是一年当中的第几个月)
  • MONTH(date) 

    解释:返回date 对应的月份,范围是从1到12。

    举例:

    技术分享技术分享

    4、HOUR、MINUTE、SECOND

  • 求小时:
  • HOUR(time)

    解释:返回time 对应的小时数。对于日时值的返回值范围是从0到23 。

  • 求分钟:
  • MINUTE(time)

    解释:返回time对应的分钟数,范围是从0到59。

  • 求秒数:
  • SECOND(time)

    解释:返回time对应的秒数,范围是从0到59。

    举例:

    技术分享

    技术分享

    技术分享

    5、TO_DAYS、FROM_DAYS

  • 求某日期,一共经历了多少天:(历史长河中)
  • TO_DAYS(date)

    解释:给定一个日期date, 返回一个天数 (从年份0开始的天数 )。

  • 求历史长河中的第某天,的日期:
  • FROM_DAYS(N)

    解释:给定一个天数 N, 返回一个DATE值。

    使用FROM_DAYS()处理古老日期时,务必谨慎,他不用于处理阳历出现前的天数(1582)。

    6、CURDATE、CURTIME、NOW

  • 求当前的年月日:
  • CURDATE()

    解释:将当前日期按照‘YYYY-MM-DD‘或YYYYMMDD格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

    举例:

    技术分享

  • 求当前的时分秒:
  • CURTIME()

    解释:将当前时间以‘HH:MM:SS‘或HHMMSS的格式返回,具体格式根据函数用在字符串或是数字语境中而定。

    举例:

    技术分享

  • 求当前的年月日、时分秒:
  • NOW()

    举例:

    技术分享

    注:如果now是放在语句当中,要看具体字段的格式要求。比如说,如果是放在date字段中,则只显示年月日;如果是放在datetime字段中,则同时显示年月日和时分秒。

     

    MySQL字符串函数、日期时间函数

    标签:

    小编还为您整理了以下内容,可能对您也有帮助:

    mysql里面str_to_date作用是什么?

    1、str_to_date。这个函数可以把字符串时间完全的翻译过来,就很好用了。

    2、MySQLdate_sub()日期时间函数和date_add()用法一致,不再赘述。另外,MySQL中还有两个函数subdate(),subtime(),建议,用date_sub()来替代。

    3、to_date(+Time+,yyyy-mm-ddhh24:mi:ss)里面的Time代表传递的时间参数,也可以直接写成时间,后面是时间的格式,比如2011-08-1615:08:30,也可以改成你喜欢的时间格式。

    4、FROM_UNIXTIME这个是MySQL函数而非PHP函数。在SQL语句中出现的函数都是MySQL函数。

    数据库常用函数

    1、系统信息函数

    系统信息函数用来查询MySQL数据库的系统信息。

    函数代码:

    SELECT VERSION()

    ->5.0.67-community-nt

    CONNECTION_ID() 返回服务器的连接数

    DATABASE()、SCHEMA返回当前数据库名

    USER()、SYSTEM_USER()返回当前用户

    2、日期时间函数

    MySQL的日期和时间函数主要用于处理日期时间。

    函数代码:

    CURDATE(),CURRENT_DATE() curdate() 返回当前日期

    SELECT CURDATE()

    ->2014-12-17

    CURTIME(),CURRENT_TIMEcurtime()

    返回当前时间

    SELECT CURTIME()

    ->15:59:02

    3、字符串函数

    函数代码:

    CHAR_LENGTH(s)char_length()返回字符串s的字符数

    SELECT CHAR_LENGTH('你好123') -- 5

    CONCAT(s1,s2,...) concat(s1,s2...)

    将字符串s1,s2等多个字符串合并为一个字符串

    4、加密函数

    加密函数是MySQL用来对数据进行加密的函数。

    函数代码:

    PASSWORD(str)

    该函数可以对字符串str进行加密,一般情况下,PASSWORD(str)用于给用户的密码加密。

    SELECT PASSWORD('123')

    ->*23AE809DDACAF96AF0FD78ED04B6A265E05AA257

    5、数学函数

    数学函数主要用于处理数字,包括整型、浮点数等。

    函数代码:

    ABS(x)abs(x)返回x的绝对值  

    SELECT ABS(-1) -- 返回1

    CEIL(x),CEILING(x)cell(x),celling(x)

    返回大于或等于x的最小整数  

    SELECT CEIL(1.5) -- 返回2

    mysql中 日期转换为字符串的函数是什么

    mysql>

    select

    date_format(now(),'%y');

    +-------------------------+

    |

    date_format(now(),'%y')

    |

    +-------------------------+

    |

    2009

    |

    +-------------------------+

    1.row

    in

    set

    (0.00

    sec)

    扩展:

    %y:年

    %c:月

    %d:日

    %h:小时

    %i:分钟

    %s:秒

    mysql>

    select

    date_format(now(),'%y-%c-%d

    %h:%i:%s');

    +----------------------------------------+

    |

    date_format(now(),'%y-%c-%d

    %h:%i:%s')

    |

    +----------------------------------------+

    |

    2009-8-07

    06:59:40

    |

    +----------------------------------------+

    1.row

    in

    set

    (0.00

    sec)

    ---

    以上,希望对你有所帮助。

    MySQL函数的日期时间函数

    a) 函数ADDDATE(date ,INTERVAL expr type ) ADDDATE(expr ,days )
    函数使用说明: 当被第二个参数的 INTERVAL 格式激活后, ADDDATE() 就是 DATE_ADD() 的同义词。相关函数 SUBDATE() 则是 DATE_SUB() 的同义词。对于 INTERVAL 参数上的信息 ,请参见关于 DATE_ADD() 的论述。
    b) 函数 ADDTIME(expr ,expr2 )
    函数使用说明: ADDTIME() 将 expr2 添加至 expr 然后返回结果。 expr 是一个时间或时间日期表达式,而 expr2 是一个时间表达式。
    c) 函数 CONVERT_TZ(dt ,from_tz ,to_tz )
    函数使用说明: CONVERT_TZ() 将时间日期值 dt 从 from_tz 给出的时区转到 to_tz 给出的时区,然后返回结果值。关于可能指定的时区的详细论述,若自变量无效,则这个函数会返回 NULL
    d) 函数 CURDATE()
    函数使用说明:将当前日期按照 'YYYY-MM-DD' 或 YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
    e) 函数 CURRENT_DATE CURRENT_DATE()
    函数使用说明: CURRENT_DATE 和 CURRENT_DATE() 是的同义词 .
    f) 函数 CURTIME()
    函数使用说明: 将当前时间以 'HH:MM:SS' 或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。
    g) 函数 CURRENT_TIME, CURRENT_TIME()
    函数使用说明: CURRENT_TIME 和 CURRENT_TIME() 是 CURTIME() 的同义词。
    h) 函数 CURRENT_TIMESTAMP, CURRENT_TIMESTAMP()
    函数使用说明: CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP() 是 NOW() 的同义词
    i) 函数 DATE(expr )
    函数使用说明: 提取日期或时间日期表达式expr 中的日期部分。
    j) 函数 DATEDIFF(expr ,expr2 )
    函数使用说明: DATEDIFF() 返回起始时间 expr 和结束时间 expr2 之间的天数。 Expr 和 expr2 为日期或 date-and-time表达式。计算中只用到这些值的日期部分。
    k) 函数 DATE_ADD(date ,INTERVAL expr type ) DATE_SUB(date ,INTERVAL expr type )
    函数使用说明:这些函数执行日期运算。 date 是一个 DATETIME 或 DATE 值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr 是一个字符串 ; 对于负值的时间间隔,它可以以一个 ‘-’ 开头。 type 为关键词,它指示了表达式被解释的方式。
    l) 函数 DATE_FORMAT(date ,format )
    函数使用说明:根据 format 字符串安排 date 值的格式。
    m) 函数 DAY(date )
    函数使用说明: DAY() 和 DAYOFMONTH() 的意义相同
    n) 函数 DAYNAME(date )
    函数使用说明:返回 date 对应的工作日名称。
    o) 函数 DAYOFMONTH(date )
    函数使用说明:返回 date 对应的该月日期,范围是从 1 到 31
    p) 函数 DAYOFWEEK(date )
    函数使用说明:返回 date (1 = 周日 , 2 = 周一 , ..., 7 = 周六 ) 对应的工作日索引。这些索引值符合 ODBC 标准
    q) 函数 DAYOFYEAR(date )
    函数使用说明:返回date 对应的一年中的天数,范围是从 1 到366 。
    r) 函数 EXTRACT(type FROM date )
    函数使用说明: EXTRACT() 函数所使用的时间间隔类型说明符同 DATE_ADD() 或 DATE_SUB() 的相同 , 但它从日期中提取其部分,而不是执行日期运算。
    s) 函数FROM_DAYS(N )
    函数使用说明: 给定一个天数 N , 返回一个 DATE 值。
    t) 函数 FROM_UNIXTIME(unix_timestamp ) FROM_UNIXTIME(unix_timestamp ,format )
    函数使用说明:返回'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS 格式值的unix_timestamp 参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。 若format 已经给出,则结果的格式是根据format 字符串而定。 format 可以包含同DATE_FORMAT() 函数输入项列表中相同的说明符。
    u) 函数 GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')
    函数使用说明:返回一个格式字符串。这个函数在同 DATE_FORMAT() 及 STR_TO_DATE() 函数结合时很有用
    v) 函数 HOUR(time )
    函数使用说明:返回 time 对应的小时数。对于日时值的返回值范围是从 0 到 23
    w) 函数 LAST_DAY(date )
    函数使用说明:获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回 NULL 。
    x) 函数 LOCALTIME, LOCALTIME()
    函数使用说明: LOCALTIME 及 LOCALTIME() 和 NOW() 具有相同意义。
    y) 函数 LOCALTIMESTAMP, LOCALTIMESTAMP()
    函数使用说明: LOCALTIMESTAMP 和 LOCALTIMESTAMP() 和 NOW() 具有相同意义。
    z) 函数 MAKEDATE(year ,dayofyear )
    函数使用说明:给出年份值和一年中的天数值,返回一个日期。 dayofyear 必须大于 0 ,否则结果为 NULL 。
    aa) 函数 MAKETIME(hour ,minute ,second )
    函数使用说明: 返回由 hour 、 minute 和 second 参数计算得出的时间值
    bb) 函数 CROSECOND(expr )
    函数使用说明:从时间或日期时间表达式expr 返回微秒值,其数字范围从 0 到 999999 。
    cc) 函数 MINUTE(time )
    函数使用说明:返回 time 对应的分钟数 , 范围是从 0 到 59 。
    dd) 函数 MONTH(date )
    函数使用说明:返回 date 对应的月份,范围时从 1 到 12 。
    ee) 函数 MONTHNAME(date )
    函数使用说明: 返回 date 对应月份的全名
    ff) 函数 NOW()
    函数使用说明:返回当前日期和时间值,其格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。
    gg) 函数 PERIOD_ADD(P ,N )
    函数使用说明:添加 N 个月至周期 P ( 格式为 YYMM 或 YYYYMM) ,返回值的格式为 YYYYMM 。注意周期参数 P 不是 日期值。
    hh) 函数 PERIOD_DIFF(P1 ,P2 )
    函数使用说明:返回周期 P1 和 P2 之间的月份数。 P1 和 P2 的格式应该为 YYMM 或 YYYYMM 。注意周期参数 P1 和 P2 不是 日期值。
    ii) 函数 QUARTER(date )
    函数使用说明:返回 date 对应的一年中的季度值,范围是从 1 到 4
    jj) 函数 SECOND(time )
    函数使用说明:返回 time 对应的秒数 , 范围是从 0 到 59 。
    kk) 函数 SEC_TO_TIME(seconds )
    函数使用说明: 返回被转化为小时、 分钟和秒数的 seconds 参数值 , 其格式为 'HH:MM:SS' 或 HHMMSS ,具体格式根据该函数是否用在字符串或数字语境中而定
    ll) 函数 STR_TO_DATE(str ,format )
    函数使用说明:这是 DATE_FORMAT() 函数的倒转。它获取一个字符串 str 和一个格式字符串 format 。若格式字符串包含日期和时间部分,则 STR_TO_DATE() 返回一个 DATETIME 值, 若该字符串只包含日期部分或时间部分,则返回一个 DATE 或 TIME 值。
    mm) 函数 SUBDATE(date ,INTERVAL expr type ) SUBDATE(expr ,days )
    函数使用说明:当被第二个参数的 INTERVAL 型式调用时 , SUBDATE() 和 DATE_SUB() 的意义相同。对于有关 INTERVAL 参数的信息, 见有关 DATE_ADD() 的讨论。
    nn) 函数 SUBTIME(expr ,expr2 )
    函数使用说明: SUBTIME() 从 expr 中提取 expr2 ,然后返回结果。 expr 是一个时间或日期时间表达式,而 xpr2 是一个时间表达式。
    oo) 函数 SYSDATE()
    函数使用说明:返回当前日期和时间值,格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS , 具体格式根据函数是否用在字符串或数字语境而定。
    pp) 函数 TIME(expr )
    函数使用说明:提取一个时间或日期时间表达式的时间部分,并将其以字符串形式返回。
    qq) 函数 TIMEDIFF(expr ,expr2 )
    函数使用说明: TIMEDIFF() 返回起始时间 expr 和结束时间 expr2 之间的时间。 expr 和 expr2 为时间或 date-and-time表达式, 两个的类型必须一样。
    rr) 函数TIMESTAMP(expr ) , TIMESTAMP(expr ,expr2 )
    函数使用说明: 对于一个单参数 , 该函数将日期或日期时间表达式expr 作为日期时间值返回 . 对于两个参数 , 它将时间表达式 expr2 添加到日期或日期时间表达式 expr 中,将 theresult 作为日期时间值返回。
    ss) 函数 TIMESTAMPADD(interval ,int_expr ,datetime_expr )
    函数使用说明:将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr 中。 int_expr 的单位被时间间隔参数给定,该参数必须是以下值的其中一个: FRAC_SECOND 、SECOND 、 MINUTE 、 HOUR 、 DAY 、 WEEK 、 MONTH 、 QUARTER 或 YEAR 。可使用所显示的关键词指定Interval 值,或使用SQL_TSI_ 前缀。例如, DAY 或SQL_TSI_DAY 都是正确的
    tt) 函数 TIMESTAMPDIFF(interval ,datetime_expr1 ,datetime_expr2 )
    函数使用说明:返回日期或日期时间表达式 datetime_expr1 和 datetime_expr2 the 之间的整数差。其结果的单位由 interval 参数给出。 interval 的法定值同 TIMESTAMPADD() 函数说明中所列出的相同。
    uu) 函数 TIME_FORMAT(time ,format )
    函数使用说明:其使用和 DATE_FORMAT() 函数相同 , 然而 format 字符串可能仅会包含处理小时、分钟和秒的格式说明符。其它说明符产生一个 NULL 值或 0 。
    vv) 函数 TIME_TO_SEC(time )
    函数使用说明:返回已转化为秒的 time 参数
    ww) 函数 TO_DAYS(date )
    函数使用说明:给定一个日期 date , 返回一个天数 ( 从年份 0 开始的天数 ) 。
    xx) 函数 UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date )
    函数使用说明:若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数 ) 作为无符号整数。若用 date 来调用 UNIX_TIMESTAMP() ,它会将参数值以 '1970-01-01 00:00:00' GMT 后的秒数的形式返回。 date 可以是一个 DATE 字符串、一个 DATETIME 字符串、一个 TIMESTAMP 或一个当地时间的 YYMMDD 或 YYYMMDD 格式的数字。
    yy) 函数 UTC_DATE, UTC_DATE()
    函数使用说明:返回当前 UTC 日期值,其格式为 'YYYY-MM-DD' 或 YYYYMMDD ,具体格式取决于函数是否用在字符串或数字语境中。
    zz) 函数 UTC_TIME, UTC_TIME()
    函数使用说明:返回当前 UTC 值,其格式为 'HH:MM:SS' 或 HHMMSS ,具体格式根据该函数是否用在字符串或数字语境而定。
    aaa) 函数 UTC_TIMESTAMP, UTC_TIMESTAMP()
    函数使用说明:返回当前 UTC 日期及时间值,格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS ,具体格式根据该函数是否用在字符串或数字语境而定
    bbb) 函数 WEEK(date [,mode ])
    函数使用说明:该函数返回 date 对应的星期数。 WEEK() 的双参数形式允许你指定该星期是否起始于周日或周一, 以及返回值的范围是否为从 0 到 53 或从 1 到 53 。若 mode 参数被省略,则使用 default_week_format 系统自变量的值。
    ccc) 函数 WEEKDAY(date )
    函数使用说明:返回 date (0 = 周一 , 1 = 周二 , ... 6 = 周日 ) 对应的工作日索引 weekday index for
    ddd) 函数 WEEKOFYEAR(date )
    函数使用说明:将该日期的阳历周以数字形式返回,范围是从 1 到 53 。它是一个兼容度函数,相当于 WEEK(date ,3) 。
    eee) 函数 YEAR(date )
    函数使用说明:返回 date 对应的年份 , 范围是从 1000 到 9999 。
    fff) 函数 YEARWEEK(date ), YEARWEEK(date ,start )
    函数使用说明:返回一个日期对应的年或周。 start 参数的工作同 start 参数对 WEEK() 的工作相同。结果中的年份可以和该年的第一周和最后一周对应的日期参数有所不同。

    MySQL函数的日期时间函数

    a) 函数ADDDATE(date ,INTERVAL expr type ) ADDDATE(expr ,days )
    函数使用说明: 当被第二个参数的 INTERVAL 格式激活后, ADDDATE() 就是 DATE_ADD() 的同义词。相关函数 SUBDATE() 则是 DATE_SUB() 的同义词。对于 INTERVAL 参数上的信息 ,请参见关于 DATE_ADD() 的论述。
    b) 函数 ADDTIME(expr ,expr2 )
    函数使用说明: ADDTIME() 将 expr2 添加至 expr 然后返回结果。 expr 是一个时间或时间日期表达式,而 expr2 是一个时间表达式。
    c) 函数 CONVERT_TZ(dt ,from_tz ,to_tz )
    函数使用说明: CONVERT_TZ() 将时间日期值 dt 从 from_tz 给出的时区转到 to_tz 给出的时区,然后返回结果值。关于可能指定的时区的详细论述,若自变量无效,则这个函数会返回 NULL
    d) 函数 CURDATE()
    函数使用说明:将当前日期按照 'YYYY-MM-DD' 或 YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
    e) 函数 CURRENT_DATE CURRENT_DATE()
    函数使用说明: CURRENT_DATE 和 CURRENT_DATE() 是的同义词 .
    f) 函数 CURTIME()
    函数使用说明: 将当前时间以 'HH:MM:SS' 或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。
    g) 函数 CURRENT_TIME, CURRENT_TIME()
    函数使用说明: CURRENT_TIME 和 CURRENT_TIME() 是 CURTIME() 的同义词。
    h) 函数 CURRENT_TIMESTAMP, CURRENT_TIMESTAMP()
    函数使用说明: CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP() 是 NOW() 的同义词
    i) 函数 DATE(expr )
    函数使用说明: 提取日期或时间日期表达式expr 中的日期部分。
    j) 函数 DATEDIFF(expr ,expr2 )
    函数使用说明: DATEDIFF() 返回起始时间 expr 和结束时间 expr2 之间的天数。 Expr 和 expr2 为日期或 date-and-time表达式。计算中只用到这些值的日期部分。
    k) 函数 DATE_ADD(date ,INTERVAL expr type ) DATE_SUB(date ,INTERVAL expr type )
    函数使用说明:这些函数执行日期运算。 date 是一个 DATETIME 或 DATE 值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr 是一个字符串 ; 对于负值的时间间隔,它可以以一个 ‘-’ 开头。 type 为关键词,它指示了表达式被解释的方式。
    l) 函数 DATE_FORMAT(date ,format )
    函数使用说明:根据 format 字符串安排 date 值的格式。
    m) 函数 DAY(date )
    函数使用说明: DAY() 和 DAYOFMONTH() 的意义相同
    n) 函数 DAYNAME(date )
    函数使用说明:返回 date 对应的工作日名称。
    o) 函数 DAYOFMONTH(date )
    函数使用说明:返回 date 对应的该月日期,范围是从 1 到 31
    p) 函数 DAYOFWEEK(date )
    函数使用说明:返回 date (1 = 周日 , 2 = 周一 , ..., 7 = 周六 ) 对应的工作日索引。这些索引值符合 ODBC 标准
    q) 函数 DAYOFYEAR(date )
    函数使用说明:返回date 对应的一年中的天数,范围是从 1 到366 。
    r) 函数 EXTRACT(type FROM date )
    函数使用说明: EXTRACT() 函数所使用的时间间隔类型说明符同 DATE_ADD() 或 DATE_SUB() 的相同 , 但它从日期中提取其部分,而不是执行日期运算。
    s) 函数FROM_DAYS(N )
    函数使用说明: 给定一个天数 N , 返回一个 DATE 值。
    t) 函数 FROM_UNIXTIME(unix_timestamp ) FROM_UNIXTIME(unix_timestamp ,format )
    函数使用说明:返回'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS 格式值的unix_timestamp 参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。 若format 已经给出,则结果的格式是根据format 字符串而定。 format 可以包含同DATE_FORMAT() 函数输入项列表中相同的说明符。
    u) 函数 GET_FORMAT(DATE|TIME|DATETIME, 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL')
    函数使用说明:返回一个格式字符串。这个函数在同 DATE_FORMAT() 及 STR_TO_DATE() 函数结合时很有用
    v) 函数 HOUR(time )
    函数使用说明:返回 time 对应的小时数。对于日时值的返回值范围是从 0 到 23
    w) 函数 LAST_DAY(date )
    函数使用说明:获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回 NULL 。
    x) 函数 LOCALTIME, LOCALTIME()
    函数使用说明: LOCALTIME 及 LOCALTIME() 和 NOW() 具有相同意义。
    y) 函数 LOCALTIMESTAMP, LOCALTIMESTAMP()
    函数使用说明: LOCALTIMESTAMP 和 LOCALTIMESTAMP() 和 NOW() 具有相同意义。
    z) 函数 MAKEDATE(year ,dayofyear )
    函数使用说明:给出年份值和一年中的天数值,返回一个日期。 dayofyear 必须大于 0 ,否则结果为 NULL 。
    aa) 函数 MAKETIME(hour ,minute ,second )
    函数使用说明: 返回由 hour 、 minute 和 second 参数计算得出的时间值
    bb) 函数 CROSECOND(expr )
    函数使用说明:从时间或日期时间表达式expr 返回微秒值,其数字范围从 0 到 999999 。
    cc) 函数 MINUTE(time )
    函数使用说明:返回 time 对应的分钟数 , 范围是从 0 到 59 。
    dd) 函数 MONTH(date )
    函数使用说明:返回 date 对应的月份,范围时从 1 到 12 。
    ee) 函数 MONTHNAME(date )
    函数使用说明: 返回 date 对应月份的全名
    ff) 函数 NOW()
    函数使用说明:返回当前日期和时间值,其格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。
    gg) 函数 PERIOD_ADD(P ,N )
    函数使用说明:添加 N 个月至周期 P ( 格式为 YYMM 或 YYYYMM) ,返回值的格式为 YYYYMM 。注意周期参数 P 不是 日期值。
    hh) 函数 PERIOD_DIFF(P1 ,P2 )
    函数使用说明:返回周期 P1 和 P2 之间的月份数。 P1 和 P2 的格式应该为 YYMM 或 YYYYMM 。注意周期参数 P1 和 P2 不是 日期值。
    ii) 函数 QUARTER(date )
    函数使用说明:返回 date 对应的一年中的季度值,范围是从 1 到 4
    jj) 函数 SECOND(time )
    函数使用说明:返回 time 对应的秒数 , 范围是从 0 到 59 。
    kk) 函数 SEC_TO_TIME(seconds )
    函数使用说明: 返回被转化为小时、 分钟和秒数的 seconds 参数值 , 其格式为 'HH:MM:SS' 或 HHMMSS ,具体格式根据该函数是否用在字符串或数字语境中而定
    ll) 函数 STR_TO_DATE(str ,format )
    函数使用说明:这是 DATE_FORMAT() 函数的倒转。它获取一个字符串 str 和一个格式字符串 format 。若格式字符串包含日期和时间部分,则 STR_TO_DATE() 返回一个 DATETIME 值, 若该字符串只包含日期部分或时间部分,则返回一个 DATE 或 TIME 值。
    mm) 函数 SUBDATE(date ,INTERVAL expr type ) SUBDATE(expr ,days )
    函数使用说明:当被第二个参数的 INTERVAL 型式调用时 , SUBDATE() 和 DATE_SUB() 的意义相同。对于有关 INTERVAL 参数的信息, 见有关 DATE_ADD() 的讨论。
    nn) 函数 SUBTIME(expr ,expr2 )
    函数使用说明: SUBTIME() 从 expr 中提取 expr2 ,然后返回结果。 expr 是一个时间或日期时间表达式,而 xpr2 是一个时间表达式。
    oo) 函数 SYSDATE()
    函数使用说明:返回当前日期和时间值,格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS , 具体格式根据函数是否用在字符串或数字语境而定。
    pp) 函数 TIME(expr )
    函数使用说明:提取一个时间或日期时间表达式的时间部分,并将其以字符串形式返回。
    qq) 函数 TIMEDIFF(expr ,expr2 )
    函数使用说明: TIMEDIFF() 返回起始时间 expr 和结束时间 expr2 之间的时间。 expr 和 expr2 为时间或 date-and-time表达式, 两个的类型必须一样。
    rr) 函数TIMESTAMP(expr ) , TIMESTAMP(expr ,expr2 )
    函数使用说明: 对于一个单参数 , 该函数将日期或日期时间表达式expr 作为日期时间值返回 . 对于两个参数 , 它将时间表达式 expr2 添加到日期或日期时间表达式 expr 中,将 theresult 作为日期时间值返回。
    ss) 函数 TIMESTAMPADD(interval ,int_expr ,datetime_expr )
    函数使用说明:将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr 中。 int_expr 的单位被时间间隔参数给定,该参数必须是以下值的其中一个: FRAC_SECOND 、SECOND 、 MINUTE 、 HOUR 、 DAY 、 WEEK 、 MONTH 、 QUARTER 或 YEAR 。可使用所显示的关键词指定Interval 值,或使用SQL_TSI_ 前缀。例如, DAY 或SQL_TSI_DAY 都是正确的
    tt) 函数 TIMESTAMPDIFF(interval ,datetime_expr1 ,datetime_expr2 )
    函数使用说明:返回日期或日期时间表达式 datetime_expr1 和 datetime_expr2 the 之间的整数差。其结果的单位由 interval 参数给出。 interval 的法定值同 TIMESTAMPADD() 函数说明中所列出的相同。
    uu) 函数 TIME_FORMAT(time ,format )
    函数使用说明:其使用和 DATE_FORMAT() 函数相同 , 然而 format 字符串可能仅会包含处理小时、分钟和秒的格式说明符。其它说明符产生一个 NULL 值或 0 。
    vv) 函数 TIME_TO_SEC(time )
    函数使用说明:返回已转化为秒的 time 参数
    ww) 函数 TO_DAYS(date )
    函数使用说明:给定一个日期 date , 返回一个天数 ( 从年份 0 开始的天数 ) 。
    xx) 函数 UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date )
    函数使用说明:若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数 ) 作为无符号整数。若用 date 来调用 UNIX_TIMESTAMP() ,它会将参数值以 '1970-01-01 00:00:00' GMT 后的秒数的形式返回。 date 可以是一个 DATE 字符串、一个 DATETIME 字符串、一个 TIMESTAMP 或一个当地时间的 YYMMDD 或 YYYMMDD 格式的数字。
    yy) 函数 UTC_DATE, UTC_DATE()
    函数使用说明:返回当前 UTC 日期值,其格式为 'YYYY-MM-DD' 或 YYYYMMDD ,具体格式取决于函数是否用在字符串或数字语境中。
    zz) 函数 UTC_TIME, UTC_TIME()
    函数使用说明:返回当前 UTC 值,其格式为 'HH:MM:SS' 或 HHMMSS ,具体格式根据该函数是否用在字符串或数字语境而定。
    aaa) 函数 UTC_TIMESTAMP, UTC_TIMESTAMP()
    函数使用说明:返回当前 UTC 日期及时间值,格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS ,具体格式根据该函数是否用在字符串或数字语境而定
    bbb) 函数 WEEK(date [,mode ])
    函数使用说明:该函数返回 date 对应的星期数。 WEEK() 的双参数形式允许你指定该星期是否起始于周日或周一, 以及返回值的范围是否为从 0 到 53 或从 1 到 53 。若 mode 参数被省略,则使用 default_week_format 系统自变量的值。
    ccc) 函数 WEEKDAY(date )
    函数使用说明:返回 date (0 = 周一 , 1 = 周二 , ... 6 = 周日 ) 对应的工作日索引 weekday index for
    ddd) 函数 WEEKOFYEAR(date )
    函数使用说明:将该日期的阳历周以数字形式返回,范围是从 1 到 53 。它是一个兼容度函数,相当于 WEEK(date ,3) 。
    eee) 函数 YEAR(date )
    函数使用说明:返回 date 对应的年份 , 范围是从 1000 到 9999 。
    fff) 函数 YEARWEEK(date ), YEARWEEK(date ,start )
    函数使用说明:返回一个日期对应的年或周。 start 参数的工作同 start 参数对 WEEK() 的工作相同。结果中的年份可以和该年的第一周和最后一周对应的日期参数有所不同。

    mysql中 日期转换为字符串的函数是什么

    DATE_FORMAT 函数
    参数1 日期时间
    参数2 格式

    %W 星期名字(Sunday……Saturday)
    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
    %Y 年, 数字, 4 位
    %y 年, 数字, 2 位
    %a 缩写的星期名字(Sun……Sat)
    %d 月份中的天数, 数字(00……31)
    %e 月份中的天数, 数字(0……31)
    %m 月, 数字(01……12)
    %c 月, 数字(1……12)
    %b 缩写的月份名字(Jan……Dec)
    %j 一年中的天数(001……366)
    %H 小时(00……23)
    %k 小时(0……23)
    %h 小时(01……12)
    %I 小时(01……12)
    %l 小时(1……12)
    %i 分钟, 数字(00……59)
    %r 时间,12 小时(hh:mm:ss [AP]M)
    %T 时间,24 小时(hh:mm:ss)
    %S 秒(00……59)
    %s 秒(00……59)
    %p AM或PM
    %w 一个星期中的天数(0=Sunday ……6=Saturday )
    %U 星期(0……52), 这里星期天是星期的第一天
    %u 星期(0……52), 这里星期一是星期的第一天
    %% 一个文字“%”。

    所有的其他字符不做解释被复制到结果中。

    例子:

    mysql> select DATE_FORMAT(NOW(), '%Y~%m~%d %k.%i.%s' ) A;
    +---------------------+
    | A |
    +---------------------+
    | 2011~10~18 15.13.15 |
    +---------------------+
    1 row in set (0.30 sec)

    mysql中 日期转换为字符串的函数是什么

    DATE_FORMAT 函数
    参数1 日期时间
    参数2 格式

    %W 星期名字(Sunday……Saturday)
    %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
    %Y 年, 数字, 4 位
    %y 年, 数字, 2 位
    %a 缩写的星期名字(Sun……Sat)
    %d 月份中的天数, 数字(00……31)
    %e 月份中的天数, 数字(0……31)
    %m 月, 数字(01……12)
    %c 月, 数字(1……12)
    %b 缩写的月份名字(Jan……Dec)
    %j 一年中的天数(001……366)
    %H 小时(00……23)
    %k 小时(0……23)
    %h 小时(01……12)
    %I 小时(01……12)
    %l 小时(1……12)
    %i 分钟, 数字(00……59)
    %r 时间,12 小时(hh:mm:ss [AP]M)
    %T 时间,24 小时(hh:mm:ss)
    %S 秒(00……59)
    %s 秒(00……59)
    %p AM或PM
    %w 一个星期中的天数(0=Sunday ……6=Saturday )
    %U 星期(0……52), 这里星期天是星期的第一天
    %u 星期(0……52), 这里星期一是星期的第一天
    %% 一个文字“%”。

    所有的其他字符不做解释被复制到结果中。

    例子:

    mysql> select DATE_FORMAT(NOW(), '%Y~%m~%d %k.%i.%s' ) A;
    +---------------------+
    | A |
    +---------------------+
    | 2011~10~18 15.13.15 |
    +---------------------+
    1 row in set (0.30 sec)

    MySQL取得当前时间的函数是什么 格式化日期的函数是什么

    取得当前时间用 now() 就行。
    在数据库中格式化时间 用DATE_FORMA T(date, format) .
    根据格式串format 格式化日期或日期和时间值date,返回结果串。

    可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化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 小时的时间形式(h h : m m : s s)

    %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

    %p AM 或P M

    %W 一周中每一天的名称( S u n d a y, Monday, . . ., Saturday)

    %a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)

    %d 两位数字表示月中的天数( 00, 01, . . ., 31)

    %e 数字形式表示月中的天数( 1, 2, . . ., 31)

    %D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)

    %w 以数字形式表示周中的天数( 0 = S u n d a y, 1=Monday, . . ., 6=Saturday)

    %j 以三位数字表示年中的天数( 001, 002, . . ., 366)

    % U 周(0, 1, 52),其中Sunday 为周中的第一天

    %u 周(0, 1, 52),其中Monday 为周中的第一天

    %M 月名(J a n u a r y, February, . . ., December)

    %b 缩写的月名( J a n u a r y, February, . . ., December)

    %m 两位数字表示的月份( 01, 02, . . ., 12)

    %c 数字表示的月份( 1, 2, . . ., 12)

    %Y 四位数字表示的年份

    %y 两位数字表示的年份

    %% 直接值“%”

    select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test

    呵呵 基本上就这些了,一会好好表现哟。。。。。。

    MySQL取得当前时间的函数是什么 格式化日期的函数是什么

    取得当前时间用 now() 就行。
    在数据库中格式化时间 用DATE_FORMA T(date, format) .
    根据格式串format 格式化日期或日期和时间值date,返回结果串。

    可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化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 小时的时间形式(h h : m m : s s)

    %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

    %p AM 或P M

    %W 一周中每一天的名称( S u n d a y, Monday, . . ., Saturday)

    %a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)

    %d 两位数字表示月中的天数( 00, 01, . . ., 31)

    %e 数字形式表示月中的天数( 1, 2, . . ., 31)

    %D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)

    %w 以数字形式表示周中的天数( 0 = S u n d a y, 1=Monday, . . ., 6=Saturday)

    %j 以三位数字表示年中的天数( 001, 002, . . ., 366)

    % U 周(0, 1, 52),其中Sunday 为周中的第一天

    %u 周(0, 1, 52),其中Monday 为周中的第一天

    %M 月名(J a n u a r y, February, . . ., December)

    %b 缩写的月名( J a n u a r y, February, . . ., December)

    %m 两位数字表示的月份( 01, 02, . . ., 12)

    %c 数字表示的月份( 1, 2, . . ., 12)

    %Y 四位数字表示的年份

    %y 两位数字表示的年份

    %% 直接值“%”

    select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test

    呵呵 基本上就这些了,一会好好表现哟。。。。。。

    mysql内置函数使用有什么作用

    mysql数据库中提供了很丰富的函数。mysql函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。

      

      简单介绍几类函数的使用范围:

      数学函数:这类函数只要用于处理数字。这类函数包括绝对值函数、正弦函数、余弦函数、获取随机数函数等。

      字符串函数:这类函数主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串的字母变成小写或大写字母的函数、获取子串的函数等。

      日期和时间函数:这类函数主要用于处理日期和时间。其中包括取当前时间的函数、获取当前日期的函数、返回年份的函数、返回日期的函数等。

      流程函数:这类函数主要用于在SQL语句中控制条件选择。其中包括IF语句、CASE语句、WHEN语句等。

      系统信息函数:这类函数主要用于获取mysql数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数、获取数据库版本的函数等。

      加密函数:这类函数主要用于对字符串进行加密解密。其中包括字符串加密函数、字符串解密函数等。

      其他函数:包括格式化函数、锁函数等。

    mysql内置函数使用有什么作用

    mysql数据库中提供了很丰富的函数。mysql函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。

      

      简单介绍几类函数的使用范围:

      数学函数:这类函数只要用于处理数字。这类函数包括绝对值函数、正弦函数、余弦函数、获取随机数函数等。

      字符串函数:这类函数主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串的字母变成小写或大写字母的函数、获取子串的函数等。

      日期和时间函数:这类函数主要用于处理日期和时间。其中包括取当前时间的函数、获取当前日期的函数、返回年份的函数、返回日期的函数等。

      流程函数:这类函数主要用于在SQL语句中控制条件选择。其中包括IF语句、CASE语句、WHEN语句等。

      系统信息函数:这类函数主要用于获取mysql数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数、获取数据库版本的函数等。

      加密函数:这类函数主要用于对字符串进行加密解密。其中包括字符串加密函数、字符串解密函数等。

      其他函数:包括格式化函数、锁函数等。

    mysql date函数怎么用

    以每24小时作为一份时间(而非自然日),根据用户的配置有两种工作模式:带状模式中,用户仅定义开始日期时,从开始日期(含)开始,每份时间1个分片地无限增加下去;环状模式中,用户定义了开始日期和结束日期时,以结束日期(含)和开始日期(含)之间的时间份数作为分片总数(分片数量固定),以类似取模的方式路由到这些分片里。

    1. DBLE 启动时,读取用户在 rule.xml 配置的 sBeginDate 来确定起始时间
    2. 读取用户在 rule.xml 配置的 sPartionDay 来确定每个 MySQL 分片承载多少天内的数据
    3. 读取用户在 rule.xml 配置的 dateFormat 来确定分片索引的日期格式
    4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的时间类型
    5. 然后求分片索引值与起始时间的差,除以 MySQL 分片承载的天数,确定所属分片

    1. DBLE 启动时,读取用户在 rule.xml 配置的起始时间 sBeginDate、终止时间 sEndDate 和每个 MySQL 分片承载多少天数据 sPartionDay
    2. 根据用户设置,建立起以 sBeginDate 开始,每 sPartionDay 天一个分片,直到 sEndDate 为止的一个环,把分片串联串联起来
    3. 读取用户在 rule.xml 配置的 defaultNode
    4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的日期类型
    5. 然后求分片索引值与起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承载的天数为模数,对分片索引值求模得到所属分片;如果分片索引值早于 sBeginDate,就会被放到 defaultNode 分片上

    与MyCat的类似分片算法对比

    中间件
    DBLE
    MyCat

    分片算法种类 date 分区算法 按日期(天)分片
    两种中间件的取模范围分片算法使用上无差别

    开发注意点
    【分片索引】1. 必须是字符串,而且 java.text.SimpleDateFormat 能基于用户指定的 dateFormat 来转换成 java.util.Date
    【分片索引】2. 提供带状模式和环状模式两种模式
    【分片索引】3. 带状模式以 sBeginDate(含)起,以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,理论上分片数量可以无限增长,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)
    【分片索引】4. 环状模式以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,以 sBeginDate(含)到 sEndDate(含)的时间长度除以单个分片长度得到恒定的分片数量,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)
    【分片索引】5. 无论哪种模式,分片索引字段的格式化字符串 dateFormat 由用户指定
    【分片索引】6. 无论哪种模式,划分不是以日历时间为准,无法对应自然月和自然年,且会受闰秒问题影响

    运维注意点
    【扩容】1. 带状模式中,随着 sBeginDate 之后的数据出现,分片数量的增加无需再平衡
    【扩容】2. 带状模式没有自动增添分片的能力,需要运维手工提前增加分片;如果路由策略计算出的分片并不存在时,会导致失败
    【扩容】3. 环状模式中,如果新旧 [sBeginDate,sEndDate] 之间有重叠,需要进行部分数据迁移;如果新旧 [sBeginDate,sEndDate] 之间没有重叠,需要数据再平衡

    配置注意点
    【配置项】1. 在 rule.xml 中,可配置项为 <propertyname="sBeginDate"> 、 <propertyname="sPartionDay"> 、 <propertyname="dateFormat"> 、 <propertyname="sEndDate"> 和 <propertyname="defaultNode">
    【配置项】2.在 rule.xml 中配置 <propertyname="dateFormat">,符合 java.text.SimpleDateFormat 规范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate

    【配置项】3.在 rule.xml 中配置 <propertyname="sBeginDate">,必须是符合 dateFormat 的日期字符串

    【配置项】4.在 rule.xml 中配置 <propertyname="sEndDate">,必须是符合 dateFormat 的日期字符串;配置了该项使用的是环状模式,若没有配置该项则使用的是带状模式

    【配置项】5.在 rule.xml 中配置 <propertyname="sPartionDay">,非负整数,该分片策略以 86400000 毫秒(24 小时整)作为一份,而 sPartionDay 告诉 DBLE 把每多少份放在同一个分片

    【配置项】6.在 rule.xml 中配置 <propertyname="defaultNode"> 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义

    mysql date函数怎么用

    以每24小时作为一份时间(而非自然日),根据用户的配置有两种工作模式:带状模式中,用户仅定义开始日期时,从开始日期(含)开始,每份时间1个分片地无限增加下去;环状模式中,用户定义了开始日期和结束日期时,以结束日期(含)和开始日期(含)之间的时间份数作为分片总数(分片数量固定),以类似取模的方式路由到这些分片里。

    1. DBLE 启动时,读取用户在 rule.xml 配置的 sBeginDate 来确定起始时间
    2. 读取用户在 rule.xml 配置的 sPartionDay 来确定每个 MySQL 分片承载多少天内的数据
    3. 读取用户在 rule.xml 配置的 dateFormat 来确定分片索引的日期格式
    4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的时间类型
    5. 然后求分片索引值与起始时间的差,除以 MySQL 分片承载的天数,确定所属分片

    1. DBLE 启动时,读取用户在 rule.xml 配置的起始时间 sBeginDate、终止时间 sEndDate 和每个 MySQL 分片承载多少天数据 sPartionDay
    2. 根据用户设置,建立起以 sBeginDate 开始,每 sPartionDay 天一个分片,直到 sEndDate 为止的一个环,把分片串联串联起来
    3. 读取用户在 rule.xml 配置的 defaultNode
    4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的日期类型
    5. 然后求分片索引值与起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承载的天数为模数,对分片索引值求模得到所属分片;如果分片索引值早于 sBeginDate,就会被放到 defaultNode 分片上

    与MyCat的类似分片算法对比

    中间件
    DBLE
    MyCat

    分片算法种类 date 分区算法 按日期(天)分片
    两种中间件的取模范围分片算法使用上无差别

    开发注意点
    【分片索引】1. 必须是字符串,而且 java.text.SimpleDateFormat 能基于用户指定的 dateFormat 来转换成 java.util.Date
    【分片索引】2. 提供带状模式和环状模式两种模式
    【分片索引】3. 带状模式以 sBeginDate(含)起,以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,理论上分片数量可以无限增长,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)
    【分片索引】4. 环状模式以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,以 sBeginDate(含)到 sEndDate(含)的时间长度除以单个分片长度得到恒定的分片数量,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)
    【分片索引】5. 无论哪种模式,分片索引字段的格式化字符串 dateFormat 由用户指定
    【分片索引】6. 无论哪种模式,划分不是以日历时间为准,无法对应自然月和自然年,且会受闰秒问题影响

    运维注意点
    【扩容】1. 带状模式中,随着 sBeginDate 之后的数据出现,分片数量的增加无需再平衡
    【扩容】2. 带状模式没有自动增添分片的能力,需要运维手工提前增加分片;如果路由策略计算出的分片并不存在时,会导致失败
    【扩容】3. 环状模式中,如果新旧 [sBeginDate,sEndDate] 之间有重叠,需要进行部分数据迁移;如果新旧 [sBeginDate,sEndDate] 之间没有重叠,需要数据再平衡

    配置注意点
    【配置项】1. 在 rule.xml 中,可配置项为 <propertyname="sBeginDate"> 、 <propertyname="sPartionDay"> 、 <propertyname="dateFormat"> 、 <propertyname="sEndDate"> 和 <propertyname="defaultNode">
    【配置项】2.在 rule.xml 中配置 <propertyname="dateFormat">,符合 java.text.SimpleDateFormat 规范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate

    【配置项】3.在 rule.xml 中配置 <propertyname="sBeginDate">,必须是符合 dateFormat 的日期字符串

    【配置项】4.在 rule.xml 中配置 <propertyname="sEndDate">,必须是符合 dateFormat 的日期字符串;配置了该项使用的是环状模式,若没有配置该项则使用的是带状模式

    【配置项】5.在 rule.xml 中配置 <propertyname="sPartionDay">,非负整数,该分片策略以 86400000 毫秒(24 小时整)作为一份,而 sPartionDay 告诉 DBLE 把每多少份放在同一个分片

    【配置项】6.在 rule.xml 中配置 <propertyname="defaultNode"> 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义

    mysql中如何将日期转换为字符串

    日期转字符串函数:date_format(date, format)

    select date_format(now(), '%Y-%m-%d');

    format取值范围:

    顺便再提供一个字符串转日期函数:str_to_date(str, format)

    select str_to_date('2018-05-27', '%Y-%m-%d');

    mysql中如何将日期转换为字符串

    日期转字符串函数:date_format(date, format)

    select date_format(now(), '%Y-%m-%d');

    format取值范围:

    顺便再提供一个字符串转日期函数:str_to_date(str, format)

    select str_to_date('2018-05-27', '%Y-%m-%d');

    如何利用MySQL函数查询特定的日期时间

    MySQL数据库中year()函数是求某个特定日期中的年份,代码如下:
    select '2015-08-11' as date,year('2015-08-11') as year;

    确定一个日期是一年中的第几个季度,可以用QUARTER()函数实现,代码如下:
    SELECT '2015-08-11' AS DATE,QUARTER('2015-08-11') AS QUARTER;

    返回一个日期是一年中的月份,利用month()函数实现,代码如下:
    SELECT '2015-08-11' AS DATE,MONTH('2015-08-11') AS MONTH;

    获取一个确定日期是一个月份中的多少号,可以用day()函数求得,具体实现代码如下:
    SELECT '2015-08-11' AS DATE,DAY('2015-08-11') AS DAY;

    有时日期中带有时间,而如何获取小时数,这可以利用自带的函数hour()实现,代码如下:
    SELECT '2015-08-11 12:20:45' AS DATE,HOUR('2015-08-11 12:20:45') AS HOUR;

    求取日期时间中的分钟数,可以利用MINUTE()函数实现,代码如下:
    SELECT '2015-08-11 12:20:45' AS DATE,MINUTE('2015-08-11 12:20:45') AS MINUTE;

    最后,获取时间中的秒数,利用SECOND()函数实现,代码如下:
    SELECT '2015-08-11 12:20:45' AS DATE,SECOND('2015-08-11 12:20:45') AS SECOND;

    如何利用MySQL函数查询特定的日期时间

    MySQL数据库中year()函数是求某个特定日期中的年份,代码如下:
    select '2015-08-11' as date,year('2015-08-11') as year;

    确定一个日期是一年中的第几个季度,可以用QUARTER()函数实现,代码如下:
    SELECT '2015-08-11' AS DATE,QUARTER('2015-08-11') AS QUARTER;

    返回一个日期是一年中的月份,利用month()函数实现,代码如下:
    SELECT '2015-08-11' AS DATE,MONTH('2015-08-11') AS MONTH;

    获取一个确定日期是一个月份中的多少号,可以用day()函数求得,具体实现代码如下:
    SELECT '2015-08-11' AS DATE,DAY('2015-08-11') AS DAY;

    有时日期中带有时间,而如何获取小时数,这可以利用自带的函数hour()实现,代码如下:
    SELECT '2015-08-11 12:20:45' AS DATE,HOUR('2015-08-11 12:20:45') AS HOUR;

    求取日期时间中的分钟数,可以利用MINUTE()函数实现,代码如下:
    SELECT '2015-08-11 12:20:45' AS DATE,MINUTE('2015-08-11 12:20:45') AS MINUTE;

    最后,获取时间中的秒数,利用SECOND()函数实现,代码如下:
    SELECT '2015-08-11 12:20:45' AS DATE,SECOND('2015-08-11 12:20:45') AS SECOND;