Solo  当前访客:0 开始使用

数据库常用函数


Sybase

一、字符串函数

1,ISNULL(EXP1,EXP2,EXP3,...) :返回第一个非空值,用法与COALESCE(exp1,exp2[,exp3...])相同;

2,TRIM(exp) :去除两边空格;

3,DATEFORMAT(date_exp,date_format) :日期型转字符型;

4,STRING(exp):转为字符型;

5,SUBSTRING(exp,int-exp1,[int-exp2]):截取exp从int-exp1开始,截取int-exp2个字符;

6,REPLACE(o-exp,search-exp,replace-exp):从o-exp搜索search-exp,替换为replace-exp;

7,SPACE(int_exp):返回int个空格;

8,UPPER(exp):转为大写字母,等价于UCASE(exp);

9,LOWER(exp):转为小写字母;

10,CHARINDEX(exp1,exp2):返回exp2字符串中exp1的位置!定位,exp1 查找的字符,exp2 被查找的字符串;

11,DATALENGTH(CHAR_EXPR):在char_expr中返回字符的长度值,忽略尾空;

12,RIGHT(char_expr,int_expr):返回char_expr右边的int_expr个字符;

13,LEFT(char_expr,int_expr):返回char_expr左边的int_expr个字符;

14,REPLICATE(char_expr,int_expr):重复char_expr,int_expr次;

15,STUFF(expr1,start,length,expr2):用expr2代替epxr1中start起始长为length的字符串;

16,REVERSE(char_expr):反写char_expr中的文本;

17,LTRIM(char_expr):删除头空;

18,RTRIM(char_expr):删除尾空;

19,STR(float_expr[,length[,decimal]]):进行数值型到字符型转换;

20,PATINDEX("%pattern%",expression):返回指定样式的开始位置,否则为0;

21,NULLIF(exp1,exp1):比较两个表达式,如果相等则返回null值,否则返回exp1

22,NUMBER(*):返回序号,相当于ORACLE的rowid,但有区别;

二、数值函数

1,CEIL(num-exp):返回大于或等于指定表达式的最小整数;兼容性:IQ&ASE;

2,FLOOR(numeric_expr):返回小于或等于指定值的最大整数;

3,ABS(num-exp):返回数值表达式的绝对值;兼容性:IQ&ASE;

4,TRUNCNUM(1231.1251,2):截取数值;不四舍五入;

5,ROUND(numeric_expr,int_expr):把数值表达式圆整到int_expr指定的精度;

6,RAND([int_expr]):返回0-1之间的随机浮点数,可指定基值;

7,SIGN(int_expr):返回正+1,零0或负-1;

8,SQRT(float_expr):返回指定值的平方根;

9,PI():返回常数3.1415926;

10,POWER(numeric_expr,power):返回numeric_expr的值给power的幂;

11,EXP(float_expr):给出指定值的指数值;

三、日期函数

1,DAY(date_exp):返回日期天值,DAYS(date_exp,int):返回日期date_exp加int后的日期;MONTH与MONTHS、YEAR与YEARS同理;

2,DATE(exp):将表达式转换为日期,并删除任何小时、分钟或秒;兼容性:IQ

3,DATEPART(date-part,date-exp): 返回日期分量的对应值(整数);

4,GETDATE():返回系统时间;

5,DATENAME(datepart,date_expr):以字符串形式返回date_expr指定部分的值,转换成合适的名字;

6,DATEDIFF(datepart,date_expr1,date_expr2):返回date_expr2-date_expr1,通过指定的datepart度量;

7,DATEADD(date-part,num-exp,date-exp):返回按指定date-part分量加num-exp值后生成的date-exp值;兼容性:IQ&ASE

8,date-part日期分量代表值:

四、转换函数

1,CONVERT(datetype,exp[,format-style]):字符转日期型 或DATE(exp);兼容性:IQ&ASE
2,CAST(exp AS data-type):返回转换为提供的数据类型的表达式的值; 兼容性:IQ
日期函数

五、其他函数

1,RANK() OVER(PARTITION BY .. ORDER BY ..) 分组分析函数,相同的ORDER BY值,返回顺序值一样,且PARTITION BY 只支持一个字段或一个字段组(需多个字段分组的则要用 || 拼为一个字段(待确认))

2,返回可读的 全局ID UUIDTOSTR(NEWID())

3,COL_LENGTH(tab_name,col_name):返回定义的列长度;兼容性:IQ&ASE

4,LENGTH(exp):返回exp的长度;兼容性:IQ

Mysql

上年:

SELECT * FROM 表名 WHERE YEAR(时间字段名) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));

本年:

SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(NOW());

上季度:

SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER));

本季度:

SELECT * FROM 表名 WHERE QUARTER(时间字段名) = QUARTER(NOW());

上月:

SELECT * FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(时间字段名,'%Y%m')) = 1;

SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ; 

SELECT * FROM 表名 WHERE WEEKOFYEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = WEEKOFYEAR(NOW()); 

SELECT * FROM 表名 WHERE MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(NOW()); 

SELECT * FROM 表名 WHERE YEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = YEAR(NOW()) AND MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = MONTH(NOW());

六月:

SELECT * FROM 表名 WHERE 时间字段名 BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW();

本月:

SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');

七天:

SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段名);

上周:

SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名,'%Y-%m-%d')) = YEARWEEK(NOW())-1;

本周:

SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名,'%Y-%m-%d')) = YEARWEEK(NOW());

昨天:

select * from bean where date(时间字段名) = date_sub(curdate(),interval 1 day);

今天:

SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());
0 0