zoukankan      html  css  js  c++  java
  • mysql日期 武胜

    CURDATE() 返回当前日期如1970-01-01

    CURTIME() 返回当前时间如00:00:00

    NOW() 返回当前日期时间如1970-01-01 00:00:00

    DATE(合法日期时间) 获取日期如1970-01-01

    EXTRACT(单位 FROM 合法日期时间) 将日期转为指定单位

    select EXTRACT(YEAR FROM `字段`) from `表`

    select DATE_ADD|DATE_SUB(`字段`,INTERVAL 数字 单位) FROM `表` 日期的加减

    单位 YEAR|MONTH|DAY|HOUR|MINUTE|SECOND|WEEK|QUARTER|MICROSECOND|YEAR_MONTH|DAY_HOUR|DAY_MINUTE|DAY_SECOND|DAY_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|HOUR_MICROSECOND|MINUTE_SECOND|MINUTE_MICROSECOND|SECOND_MICROSECOND

    select FROM_UNIXTIME(1249488000,'%Y年%m月%d') 2007年11月20

    select FROM_UNIXTIME(875996580) 1997-10-04 22:23:00

    select UNIX_TIMESTAMP() 882226357

    select UNIX_TIMESTAMP('1997-10-04 22:23:00') 875996580

    select DATEDIFF(日期1,日期2) 日期1比日期2多几天

    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 位

    ======

    #取得当前日期
    set @dt=CURDATE();
    select @dt;


    #当前日期这个月的第一天
    select concat(left(@dt,8),'1');

    #当前日期这个月的最后一天
    select date_sub(concat(left(date_add(@dt,INTERVAL 1 MONTH),8),'01'),INTERVAL 1 DAY);

    #当前日期这个季度的第一天
    select concat(left(@dt,5),quarter(@dt)*3-2,'-01');
    select date_sub(concat(left(@dt,5),quarter(@dt)*3,'-01'),INTERVAL 2 MONTH);

    #当前日期这个季度的最后一天
    select date_sub(date_add(concat(left(@dt,5),quarter(@dt)*3,'-01'),INTERVAL 1 MONTH),INTERVAL 1 DAY);

    #当前日期这年的第一天
    select concat(left(@dt,5),'01-01');

    #当前日期这年的最后一天
    select concat(left(@dt,5),'12-31');

    SELECT CASE WHEN YEAR('62/1/1') > 2010 THEN YEAR('62/1/1') - 100 ELSE  YEAR('72/1/1') END AS 出生年份

    =======

    MySQL日期时间函数大全
    DAYOFWEEK(date)
     返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)
    mysql> select DAYOFWEEK('1998-02-03');
      -> 3
    WEEKDAY(date)
     返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
    mysql> select WEEKDAY('1997-10-04 22:23:00');
      -> 5
    mysql> select WEEKDAY('1997-11-05');
      -> 2
    DAYOFMONTH(date)
     返回date是一月中的第几日(在1到31范围内)
    mysql> select DAYOFMONTH('1998-02-03');
      -> 3
    DAYOFYEAR(date)
     返回date是一年中的第几日(在1到366范围内)
    mysql> select DAYOFYEAR('1998-02-03');
      -> 34
    MONTH(date)
     返回date中的月份数值
    mysql> select MONTH('1998-02-03');
      -> 2
    DAYNAME(date)
     返回date是星期几(按英文名返回)
    mysql> select DAYNAME("1998-02-05");
      -> 'Thursday'
    MONTHNAME(date)
     返回date是几月(按英文名返回)
    mysql> select MONTHNAME("1998-02-05");
      -> 'February'
    QUARTER(date)
     返回date是一年的第几个季度
    mysql> select QUARTER('98-04-01');
      -> 2
    WEEK(date,first)
     返回date是一年的第几周(first默认值0,first取值1表示周一是周的开始,0从周日开始)
    mysql> select WEEK('1998-02-20');
      -> 7
    mysql> select WEEK('1998-02-20',0);
      -> 7
    mysql> select WEEK('1998-02-20',1);
      -> 8
    YEAR(date)
     返回date的年份(范围在1000到9999)
    mysql> select YEAR('98-02-03');
      -> 1998
    HOUR(time)
     返回time的小时数(范围是0到23)
    mysql> select HOUR('10:05:03');
      -> 10
    MINUTE(time)
     返回time的分钟数(范围是0到59)
    mysql> select MINUTE('98-02-03 10:05:03');
      -> 5
    SECOND(time)
     返回time的秒数(范围是0到59)
    mysql> select SECOND('10:05:03');
      -> 3
    PERIOD_ADD(P,N)
     增加N个月到时期P并返回(P的格式YYMM或YYYYMM)
    mysql> select PERIOD_ADD(9801,2);
      -> 199803
    PERIOD_DIFF(P1,P2)
     返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM)
    mysql> select PERIOD_DIFF(9802,199703);
      -> 11
    DATE_ADD(date,INTERVAL expr type)
    DATE_SUB(date,INTERVAL expr type)
    ADDDATE(date,INTERVAL expr type)
    SUBDATE(date,INTERVAL expr type)
     对日期时间进行加减法运算
     (ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词,也可以用运算符 和-而不是函数
     date是一个DATETIME或DATE值,expr对date进行加减法的一个表达式字符串type指明表达式expr应该如何被解释
     [type值 含义 期望的expr格式]:
     SECOND 秒 SECONDS
     MINUTE 分钟 MINUTES
     HOUR 时间 HOURS
     DAY 天 DAYS
     MONTH 月 MONTHS
     YEAR 年 YEARS
     MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"
     HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"
     DAY_HOUR 天和小时 "DAYS HOURS"
     YEAR_MONTH 年和月 "YEARS-MONTHS"
     HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"
     DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"
     DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"
     expr中允许任何标点做分隔符,如果所有是DATE值时结果是一个DATE值,否则结果是一个DATETIME值)
     如果type关键词不完整,则MySQL从右端取值,DAY_SECOND因为缺少小时分钟等于MINUTE_SECOND)
     如果增加MONTH、YEAR_MONTH或YEAR,天数大于结果月份的最大天数则使用最大天数)
    mysql> SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND;
      -> 1998-01-01 00:00:00
    mysql> SELECT INTERVAL 1 DAY "1997-12-31";
      -> 1998-01-01
    mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
      -> 1997-12-31 23:59:59
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);
      -> 1998-01-01 00:00:00
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);
      -> 1998-01-01 23:59:59
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);
      -> 1998-01-01 00:01:00
    mysql> SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND);
      -> 1997-12-30 22:58:59
    mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
      -> 1997-12-30 14:00:00
    mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
      -> 1997-12-02
    mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
      -> 1999
    mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
      -> 199907
    mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
      -> 20102
    TO_DAYS(date)
     返回日期date是西元0年至今多少天(不计算1582年以前)
    mysql> select TO_DAYS(950501);
      -> 728779
    mysql> select TO_DAYS('1997-10-07');
      -> 729669
    FROM_DAYS(N)
     给出西元0年至今多少天返回DATE值(不计算1582年以前)
    mysql> select FROM_DAYS(729669);
      -> '1997-10-07'
    DATE_FORMAT(date,format)
     根据format字符串格式化date值
     (在format字符串中可用标志符:
     %M 月名字(January……December)
     %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('1997-10-04 22:23:00','%W %M %Y');
      -> 'Saturday October 1997'
    mysql> select DATE_FORMAT('1997-10-04 22:23:00','%H:%i:%s');
      -> '22:23:00'
    mysql> select DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');
      -> '4th 97 Sat 04 10 Oct 277'
    mysql> select DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');
      -> '22 22 10 10:23:00 PM 22:23:00 00 6'
    TIME_FORMAT(time,format)
     和DATE_FORMAT()类似,但TIME_FORMAT只处理小时、分钟和秒(其余符号产生一个NULL值或0)
    CURDATE()
    CURRENT_DATE()
     以'YYYY-MM-DD'或YYYYMMDD格式返回当前日期值(根据返回值所处上下文是字符串或数字)
    mysql> select CURDATE();
      -> '1997-12-15'
    mysql> select CURDATE() 0;
      -> 19971215
    CURTIME()
    CURRENT_TIME()
     以'HH:MM:SS'或HHMMSS格式返回当前时间值(根据返回值所处上下文是字符串或数字)
    mysql> select CURTIME();
      -> '23:50:26'
    mysql> select CURTIME() 0;
      -> 235026
    NOW()
    SYSDATE()
    CURRENT_TIMESTAMP()
     以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前日期时间(根据返回值所处上下文是字符串或数字)
    mysql> select NOW();
      -> '1997-12-15 23:50:26'
    mysql> select NOW() 0;
      -> 19971215235026
    UNIX_TIMESTAMP()
    UNIX_TIMESTAMP(date)
     返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间)
    mysql> select UNIX_TIMESTAMP();
      -> 882226357
    mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
      -> 875996580
    FROM_UNIXTIME(unix_timestamp)
     以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字)
    mysql> select FROM_UNIXTIME(875996580);
      -> '1997-10-04 22:23:00'
    mysql> select FROM_UNIXTIME(875996580) 0;
      -> 19971004222300
    FROM_UNIXTIME(unix_timestamp,format)
     以format字符串格式返回时间戳的值
    mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');
      -> '1997 23rd December 03:43:30 x'
    SEC_TO_TIME(seconds)
     以'HH:MM:SS'或HHMMSS格式返回秒数转成的TIME值(根据返回值所处上下文是字符串或数字)
    mysql> select SEC_TO_TIME(2378);
      -> '00:39:38'
    mysql> select SEC_TO_TIME(2378) 0;
      -> 3938
    TIME_TO_SEC(time)
     返回time值有多少秒
    mysql> select TIME_TO_SEC('22:23:00');
      -> 80580
    mysql> select TIME_TO_SEC('00:39:38');
      -> 2378

    ========

    一、数学函数
    ABS(x)                    返回x的绝对值
    BIN(x)          返回x的二进制(OCT返回八进制,HEX返回十六进制)
    CEILING(x)                返回大于x的最小整数值
    EXP(x)          返回值e(自然对数的底)的x次方
    FLOOR(x)         返回小于x的最大整数值
    GREATEST(x1,x2,...,xn)  返回集合中最大的值
    LEAST(x1,x2,...,xn)       返回集合中最小的值
    LN(x)                     返回x的自然对数
    LOG(x,y)         返回x的以y为底的对数
    MOD(x,y)                  返回x/y的模(余数)
    PI()           返回pi的值(圆周率)
    RAND()          返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
    ROUND(x,y)        返回参数x的四舍五入的有y位小数的值
    SIGN(x)          返回代表数字x的符号的值
    SQRT(x)          返回一个数的平方根
    TRUNCATE(x,y)             返回数字x截短为y位小数的结果
    二、聚合函数(常用于GROUP BY从句的SELECT查询中)
    AVG(col)         返回指定列的平均值
    COUNT(col)        返回指定列中非NULL值的个数
    MIN(col)         返回指定列的最小值
    MAX(col)         返回指定列的最大值
    SUM(col)         返回指定列的所有值之和
    GROUP_CONCAT(col)     返回由属于一组的列值连接组合而成的结果
    三、字符串函数
    ASCII(char)        返回字符的ASCII码值
    BIT_LENGTH(str)      返回字符串的比特长度
    CONCAT(s1,s2...,sn)    将s1,s2...,sn连接成字符串
    CONCAT_WS(sep,s1,s2...,sn)  将s1,s2...,sn连接成字符串,并用sep字符间隔
    INSERT(str,x,y,instr)    将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
    FIND_IN_SET(str,list)   分析逗号分隔的list列表,如果发现str,返回str在list中的位置
    LCASE(str)或LOWER(str)   返回将字符串str中所有字符改变为小写后的结果
    LEFT(str,x)        返回字符串str中最左边的x个字符
    LENGTH(s)         返回字符串str中的字符数
    LTRIM(str)         从字符串str中切掉开头的空格
    POSITION(substr,str)    返回子串substr在字符串str中第一次出现的位置
    QUOTE(str)         用反斜杠转义str中的单引号
    REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果
    REVERSE(str)        返回颠倒字符串str的结果
    RIGHT(str,x)        返回字符串str中最右边的x个字符
    RTRIM(str)         返回字符串str尾部的空格
    STRCMP(s1,s2)       比较字符串s1和s2
    TRIM(str)         去除字符串首部和尾部的所有空格
    UCASE(str)或UPPER(str)   返回将字符串str中所有字符转变为大写后的结果
    四、日期和时间函数
    CURDATE()或CURRENT_DATE() 返回当前的日期
    CURTIME()或CURRENT_TIME() 返回当前的时间
    DATE_ADD(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);
    DATE_FORMAT(date,fmt)   依照指定的fmt格式格式化日期date值
    DATE_SUB(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);
    DAYOFWEEK(date)    返回date所代表的一星期中的第几天(1~7)
    DAYOFMONTH(date)   返回date是一个月的第几天(1~31)
    DAYOFYEAR(date)    返回date是一年的第几天(1~366)
    DAYNAME(date)    返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);
    FROM_UNIXTIME(ts,fmt)   根据指定的fmt格式,格式化UNIX时间戳ts
    HOUR(time)    返回time的小时值(0~23)
    MINUTE(time)    返回time的分钟值(0~59)
    MONTH(date)    返回date的月份值(1~12)
    MONTHNAME(date)    返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
    NOW()     返回当前的日期和时间
    QUARTER(date)    返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE);
    WEEK(date)    返回日期date为一年中第几周(0~53)
    YEAR(date)    返回日期date的年份(1000~9999)
    一些示例:
    获取当前系统时间:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
    SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);
    SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);
    SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);
    返回两个日期值之间的差值(月数):SELECT PERIOD_DIFF(200302,199802);
    在Mysql中计算年龄:
    SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age FROM employee;
    这样,如果Brithday是未来的年月日的话,计算结果为0。
    下面的SQL语句计算员工的绝对年龄,即当Birthday是未来的日期时,将得到负值。
    SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthday, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthday, '00-%m-%d')) AS age from employee
    五、加密函数
    AES_ENCRYPT(str,key)   返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,以BLOB类型存储
    AES_DECRYPT(str,key)   返回用密钥key对字符串str利用高级加密标准算法解密后的结果
    DECODE(str,key)    使用key作为密钥解密加密字符串str
    ENCRYPT(str,salt)   使用UNIX crypt()函数,用关键词salt(一个可以惟一确定口令的字符串,就像钥匙一样)加密字符串str
    ENCODE(str,key)    使用key作为密钥加密字符串str,调用ENCODE()的结果是一个二进制字符串,它以BLOB类型存储
    MD5()     计算字符串str的MD5校验和
    PASSWORD(str)    返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。
    SHA()     计算字符串str的安全散列算法(SHA)校验和
    示例:
    SELECT ENCRYPT('root','salt');
    SELECT ENCODE('xufeng','key');
    SELECT DECODE(ENCODE('xufeng','key'),'key');#加解密放在一起
    SELECT AES_ENCRYPT('root','key');
    SELECT AES_DECRYPT(AES_ENCRYPT('root','key'),'key');
    SELECT MD5('123456');
    SELECT SHA('123456');
    六、控制流函数
    MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。
    MySQL控制流函数:
    CASE WHEN[test1] THEN [result1]...ELSE [default] END 如果testN是真,则返回resultN,否则返回default
    CASE [test] WHEN[val1] THEN [result]...ELSE [default] END   如果test和valN相等,则返回resultN,否则返回default
    IF(test,t,f)   如果test是真,返回t;否则返回 f
    IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2
    NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1
    这些函数的第一个是IFNULL(),它有两个参数,并且对第一个参数进行判断。如果第一个参数不是NULL,函数就会向调用者返回第一个参数;如果是NULL,将返回第二个参数。
    如:SELECT IFNULL(1,2), IFNULL(NULL,10), IFNULL(4*NULL,'false');
    NULLIF()函数将会检验提供的两个参数是否相等,如果相等,则返回NULL,如果不相等,就返回第一个参数。
    如:SELECT NULLIF(1,1),NULLIF('A','B'),NULLIF(2+3,4+1);
    和许多脚本语言提供的IF()函数一样,MySQL的IF()函数也可以建立一个简单的条件测试,这个函数有三个参数,第一个是要被判断的表达式,如果表达式为真,IF()将会返回第二个参数,如果为假,IF()将会返回第三个参数。
    如:SELECT IF(1<10,2,3),IF(56>100,'true','false');
    IF()函数在只有两种可能结果时才适合使用。然而,在现实世界中,我们可能发现在条件测试中会需要多个分支。在这种情况下,MySQL提供了CASE函数,它和PHP及Perl语言的switch-case条件例程一样。
    CASE函数的格式有些复杂,通常如下所示:
    CASE [expression to be evaluated]
    WHEN [val 1] THEN [result 1]
    WHEN [val 2] THEN [result 2]
    WHEN [val 3] THEN [result 3]
    ......
    WHEN [val n] THEN [result n]
    ELSE [default result]
    END
    这 里,第一个参数是要被判断的值或表达式,接下来的是一系列的WHEN-THEN块,每一块的第一个参数指定要比较的值,如果为真,就返回结果。所有的 WHEN-THEN块将以ELSE块结束,当END结束了所有外部的CASE块时,如果前面的每一个块都不匹配就会返回ELSE块指定的默认结果。如果没 有指定ELSE块,而且所有的WHEN-THEN比较都不是真,MySQL将会返回NULL。
    CASE函数还有另外一种句法,有时使用起来非常方便,如下:
    CASE
    WHEN [conditional test 1] THEN [result 1]
    WHEN [conditional test 2] THEN [result 2]
    ELSE [default result]
    END
    这种条件下,返回的结果取决于相应的条件测试是否为真。
    示例:
    mysql>SELECT CASE 'green'
          WHEN 'red' THEN 'stop'
          WHEN 'green' THEN 'go' END;
    SELECT CASE 9 WHEN 1 THEN 'a' WHEN 2 THEN 'b' ELSE 'N/A' END;
    SELECT CASE WHEN (2+2)=4 THEN 'OK' WHEN (2+2)<>4 THEN 'not OK' END AS STATUS;
    SELECT Name,IF((IsActive = 1),'已激活','未激活') AS RESULT FROM UserLoginInfo;
    SELECT fname,lname,(math+sci+lit) AS total,
    CASE WHEN (math+sci+lit) < 50 THEN 'D'
    WHEN (math+sci+lit) BETWEEN 50 AND 150 THEN 'C'
    WHEN (math+sci+lit) BETWEEN 151 AND 250 THEN 'B'
    ELSE 'A' END
    AS grade FROM marks;
    SELECT IF(ENCRYPT('sue','ts')=upass,'allow','deny') AS LoginResult FROM users WHERE uname = 'sue';#一个登陆验证
    七、格式化函数
    DATE_FORMAT(date,fmt)   依照字符串fmt格式化日期date值
    FORMAT(x,y)    把x格式化为以逗号隔开的数字序列,y是结果的小数位数
    INET_ATON(ip)    返回IP地址的数字表示
    INET_NTOA(num)    返回数字所代表的IP地址
    TIME_FORMAT(time,fmt)   依照字符串fmt格式化时间time值
    其中最简单的是FORMAT()函数,它可以把大的数值格式化为以逗号间隔的易读的序列。
    示例:
    SELECT FORMAT(34234.34323432,3);
    SELECT DATE_FORMAT(NOW(),'%W,%D %M %Y %r');
    SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');
    SELECT DATE_FORMAT(19990330,'%Y-%m-%d');
    SELECT DATE_FORMAT(NOW(),'%h:%i %p');
    SELECT INET_ATON('10.122.89.47');
    SELECT INET_NTOA(175790383);
    八、类型转化函数
    为了进行数据类型转化,MySQL提供了CAST()函数,它可以把一个值转化为指定的数据类型。类型有:BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED
    示例:
    SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0;
    SELECT 'f'=BINARY 'F','f'=CAST('F' AS BINARY);
    九、系统信息函数
    DATABASE()    返回当前数据库名
    BENCHMARK(count,expr)   将表达式expr重复运行count次
    CONNECTION_ID()    返回当前客户的连接ID
    FOUND_ROWS()    返回最后一个SELECT查询进行检索的总行数
    USER()或SYSTEM_USER()   返回当前登陆用户名
    VERSION()    返回MySQL服务器的版本
    示例:
    SELECT DATABASE(),VERSION(),USER();
    SELECT BENCHMARK(9999999,LOG(RAND()*PI()));#该例中,MySQL计算LOG(RAND()*PI())表达式9999999次。
  • 相关阅读:
    linux nat路由设置
    [auv] 模拟呼叫
    Sqlserver 导出insert插入语句
    函数name属性
    学习前端,应该选择哪些书籍来看?(转)
    JavaScript继承学习笔记
    Web响应式网站
    Javascript 异步加载详解(转)
    使用 nodeinspector 调试 Node.js
    用 JavaScript 检测 CPU 占比(转)
  • 原文地址:https://www.cnblogs.com/zeroone/p/3069487.html
Copyright © 2011-2022 走看看