mysql函数

mysql函数:

1:字符串函数:根据,MySQL 会自动将数字转化为字符串,反之亦然。

    转化为字符串:可使用 CAST()CONCAT()函数:

      mysql> SELECT 38.8, CAST(38.8 AS CHAR);

            -> 38.8, '38.8'

      mysql> SELECT 38.8, CONCAT(38.8);

             -> 38.8, '38.8'

      CAST() 比较可取。

   1.2:STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回  -1,其它情况返回 1 。

           mysql> SELECT STRCMP('text', 'text2');

                   -> -1

           mysql> SELECT STRCMP('text2', 'text');

                    -> 1

          mysql> SELECT STRCMP('text', 'text');

                    -> 0

2:数值函数:

    2.1 算数运算符:就 -、 +和 *而言, 若两个参数均为正数,则其计算结果的精确度为 BIGINT (64比特),若其中一个参数为无符  号整数, 而其它参数也是整数, 则结果为无符号整数。

    2.2 数学函数;若发生错误,所有数学函数会返回 NULL 。

          ABS(X):返回X 的绝对值。

          ACOS(X):返回X 反余弦, 即, 余弦是X的值。若X 不在-1到 1的范围之内,则返回 NULL 。

          ASIN(X):返回X 的反正弦,即,正弦为X 的值。若X  若X 不在-1到 1的范围之内,则返回 NULL 。

          ATAN(X):返回X 的反正切,即,正切为X 的值。

          CEILING(X) ;CEIL(X):返回不小于X 的最小整数值

          COS(X):返回X 的余弦,其中X在弧度上已知。

          COT(X):返回X 的余切。

         CRC32(expr):计算循环冗余码校验值并返回一个 32比特无符号值。若参数为NULL ,则结果为 NULL。该参数应为一个字符串,而且在不是字符串的情况下会被作为字符串处理(若有可能)。

          DEGREES(X):返回参数 X, 该参数由弧度被转化为度。

          EXP(X):返回e的X乘方后的值(自然对数的底)。

          FLOOR(X):返回不大于X的最大整数值 。

          FORMAT(X,D):将数字X 的格式写成'#,###,###.##'格式, 即保留小数点后 D位,而第D位的保留方式为四舍五入,然后将结果以字符串的形式返回。若  D 为 0, 则返回结果不带有小数点,或不含小数部分。

           LN(X):返回X 的自然对数,即, X 相对于基数e 的对数。这个函数同LOG(X)具有相同意义

           LOG(B,X) 就相当于 LOG(X) / LOG(B)。

           LOG2(X):返回X 的基数为2的对数。

           LOG10(X):返回X的基数为10的对数。

           MOD(N,M) , N % MN MOD M ;模操作。返回NM除后的余数。

           PI():返回 ϖ (pi)的值。默认的显示小数位数是7位,然而 MySQL内部会使用完全双精度值。

           POW(X,Y) , POWER(X,Y):返回XY乘方的结果值。

           RADIANS(X):返回由度转化为弧度的参数 X,  (注意 ϖ 弧度等于180度)。

           RAND() RAND(N):返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。ORDER BY RAND() LIMIT 1000

若要在iRj 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (ji + 1))。

           ROUND(X) ROUND(X,D):返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D 位,可将 D 设为负值。

            SIGN(X):返回参数作为-1、 0或1的符号,该符号取决于X 的值为负、零或正。

            SIN(X):返回X 正弦,其中 X 在弧度中被给定。

            SQRT(X):返回非负数X 的二次方根。

            TAN(X):返回X 的正切,其中X 在弧度中被给定。

            TRUNCATE(X,D):返回被舍去至小数点后D位的数字X。若D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将D设为负数,若要截去(归零) X小数点左起第D位开始后面所有低位的值.  

3:时间与日期函数:

     3.1:DATE_SUB() 函数从日期减去指定的时间间隔。

语法:DATE_SUB(date,INTERVAL expr type);

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type 参数可以是下列值:

Type 值
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

例子:

查询一周:

select * from table  where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);

查询一个月:

select * from table  where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time)

 SUBDATE:

mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);

        -> '1997-12-02'

第二个形式允许对days使用整数值。在这些情况下,它被算作由日期或日期时间表达式 expr中提取的天数。

      3.2:DATEDIFF() 函数返回两个日期之间的天数。

        CURDATE()

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

        CURTIME():

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

       DATE(expr):提取日期或时间日期表达式expr中的日期部分。

mysql> SELECT DATE('2003-12-31 01:02:03');

        -> '2003-12-31'

DATE_ADD() 函数向日期添加指定的时间间隔。

DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)

这些函数执行日期运算。 date 是一个 DATETIME 或DATE值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。  Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被解释的方式:

type

预期的 expr 格式

MICROSECOND

MICROSECONDS

SECOND

SECONDS

MINUTE

MINUTES

HOUR

HOURS

DAY

DAYS

WEEK

WEEKS

MONTH

MONTHS

QUARTER

QUARTERS

YEAR

YEARS

SECOND_MICROSECOND

'SECONDS.MICROSECONDS'

MINUTE_MICROSECOND

'MINUTES.MICROSECONDS'

MINUTE_SECOND

'MINUTES:SECONDS'

HOUR_MICROSECOND

'HOURS.MICROSECONDS'

HOUR_SECOND

'HOURS:MINUTES:SECONDS'

HOUR_MINUTE

'HOURS:MINUTES'

DAY_MICROSECOND

'DAYS.MICROSECONDS'

DAY_SECOND

'DAYS HOURS:MINUTES:SECONDS'

DAY_MINUTE

'DAYS HOURS:MINUTES'

DAY_HOUR

'DAYS HOURS'

YEAR_MONTH

'YEARS-MONTHS'

NOW() 返回当前的日期和时间。

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format)

格式描述
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时(00-23)
%h小时(01-12)
%I小时(01-12)
%i分钟,数值(00-59)
%j年的天(001-366)
%k小时(0-23)
%l小时(1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时(hh:mm:ss)
%U周(00-53)星期日是一周的第一天
%u周(00-53)星期一是一周的第一天
%V周(01-53)星期日是一周的第一天,与 %X 使用
%v周(01-53)星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天(0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位

EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

EXTRACT(unit FROM date)

date 参数是合法的日期表达式。unit 参数可以是下列的值:

Unit 值
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

DAY(date)  DAYNAME(date)

DAY() 和DAYOFMONTH()的意义相同。返回date 对应的工作日名称。

mysql> SELECT DAYNAME('1998-02-05');

        -> '周四'

DAYOFMONTH(date)

返回date 对应的该月日期,范围是从 1到31。

mysql> SELECT DAYOFMONTH('1998-02-03');

        -> 3

DAYOFWEEK(date)

返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工作日索引。这些索引值符合 ODBC标准。

mysql> SELECT DAYOFWEEK('1998-02-03');

        -> 3

DAYOFYEAR(date)

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

EXTRACT(type FROM date)

EXTRACT()函数所使用的时间间隔类型说明符同 DATE_ADD()或DATE_SUB()的相同,但它从日期中提取其部分,而不是执行日期运算。

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

mysql> SELECT HOUR('10:05:03');

        -> 10

然而,  TIME 值的范围实际上非常大, 所以HOUR可以返回大于23的值。

LAST_DAY(date):获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回NULL。

mysql> SELECT LAST_DAY('2003-02-05');

        -> '2003-02-28'

MAKEDATE(year,dayofyear):给出年份值和一年中的天数值,返回一个日期。dayofyear 必须大于 0 ,否则结果为 NULL。

mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);

        -> '2001-01-31', '2001-02-01'

MAKETIME(hour,minute,second):返回由hourminutesecond 参数计算得出的时间值。

mysql> SELECT MAKETIME(12,15,30);

        -> '12:15:30'

MICROSECOND(expr):从时间或日期时间表达式expr返回微秒值,其数字范围从 0到 999999。

mysql> SELECT MICROSECOND('12:00:00.123456');

         -> 123456

MINUTE(time):返回 time 对应的分钟数,范围是从 0 到 59

mysql> SELECT MINUTE('98-02-03 10:05:03');

        -> 5

MONTH(date):返回date 对应的月份,范围时从 1 到 12。

mysql> SELECT MONTH('1998-02-03');

        -> 2

MONTHNAME(date):返回date 对应月份的全名。

mysql> SELECT MONTHNAME('1998-02-05');

        -> 'February ' 

PERIOD_ADD(P,N):添加 N 个月至周期P (格式为YYMM 或YYYYMM),返回值的格式为 YYYYMM。注意周期参数 P 不是日期值。

mysql> SELECT PERIOD_ADD(9801,2);

        -> 199803

PERIOD_DIFF(P1,P2) :返回周期P1P2 之间的月份数。P1P2 的格式应该为YYMM或YYYYMM。注意周期参数 P1P2 不是日期值。

mysql> SELECT PERIOD_DIFF(9802,199703);

        -> 11

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

mysql> SELECT QUARTER('98-04-01');

        -> 2

SECOND(time):返回time 对应的秒数, 范围是从 0到59。

mysql> SELECT SECOND('10:05:03');

        -> 3

SEC_TO_TIME(seconds):返回被转化为小时、 分钟和秒数的seconds参数值, 其格式为 'HH:MM:SS' 或HHMMSS,具体格式根据该函数是否用在字符串或数字语境中而定。

mysql> SELECT SEC_TO_TIME(2378);

        -> '00:39:38'

mysql> SELECT SEC_TO_TIME(2378) + 0;

        -> 3938

STR_TO_DATE(str,format):

这是DATE_FORMAT() 函数的倒转。它获取一个字符串 str 和一个格式字符串format。若格式字符串包含日期和时间部分,则 STR_TO_DATE()返回一个 DATETIME 值, 若该字符串只包含日期部分或时间部分,则返回一个 DATE 或TIME值

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');

        -> '2004-04-31'

TIME(expr):提取一个时间或日期时间表达式的时间部分,并将其以字符串形式返回。

mysql> SELECT TIME('2003-12-31 01:02:03');

        -> '01:02:03'

mysql> SELECT TIME('2003-12-31 01:02:03.000123');

        -> '01:02:03.000123'

TIMEDIFF(expr,expr2):TIMEDIFF() 返回起始时间 expr 和结束时间expr2 之间的时间。 exprexpr2 为时间或 date-and-time 表达式,两个的类型必须一样。

mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',

    ->                 '2000:01:01 00:00:00.000001');

        -> '-00:00:00.000001'

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

mysql> SELECT TO_DAYS(950501);

        -> 728779

WEEK(date[,mode]):

该函数返回date 对应的星期数。WEEK() 的双参数形式允许你指定该星期是否起始于周日或周一, 以及返回值的范围是否为从0 到53 或从1 到53。若 mode参数被省略,则使用default_week_format系统自变量的值

以下表说明了mode 参数的工作过程:

 

第一天

 

 

Mode

工作日

范围

Week 1 为第一周 ...

0

周日

0-53

本年度中有一个周日

1

周一

0-53

本年度中有3天以上

2

周日

1-53

本年度中有一个周日

3

周一

1-53

本年度中有3天以上

4

周日

0-53

本年度中有3天以上

5

周一

0-53

本年度中有一个周一

6

周日

1-53

本年度中有3天以上

7

周一

1-53

本年度中有一个周一

mysql> SELECT WEEK('1998-02-20');

        -> 7

mysql> SELECT WEEK('1998-02-20',0);

        -> 7

mysql> SELECT WEEK('1998-02-20',1);

        -> 8

mysql> SELECT WEEK('1998-12-31',1);

        -> 53

注意,假如有一个日期位于前一年的最后一周, 若你不使用2、3、6或7作为mode 参数选择,则MySQL返回 0:

mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);

        -> 2000, 0

WEEKDAY(date):返回date (0 = 周一, 1 = 周二, ... 6 = 周日)对应的工作日索引

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');

        -> 1

WEEKOFYEAR(date):将该日期的阳历周以数字形式返回,范围是从1到53。它是一个兼容度函数,相当于WEEK(date,3)。

YEAR(date):返回date 对应的年份,范围是从1000到9999

mysql> SELECT YEAR('98-02-03');

        -> 1998

YEARWEEK(date), YEARWEEK(date,start):

返回一个日期对应的年或周。start参数的工作同 start参数对 WEEK()的工作相同。结果中的年份可以和该年的第一周和最后一周对应的日期参数有所不同。

mysql> SELECT YEARWEEK('1987-01-01');

        -> 198653

 加密函数:SHA1():该值被作为40位十六进制数字返回;

                    MD5():该值以32位十六进制数字的二进制字符串的形式返回;

其他函数:

sleep():睡眠;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值