SqlServer与MySQL函数对应表

函数对应

    • 记录几条MySQL查询语句
    • 再记录一个神奇的错误

最近数据库从SqlServer换为MySQL,有一些函数两个数据库不一样,把不一样的函数记录一下方便以后再用

方法作用 SqlServer MySQL
获取两个日期间隔 DATEDIFF(datepart,startdate,enddate) TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
获取系统时间 GATADATA() SYSDATE()
函数用于返回日期/时间的单独部分 DATEPART(datepart,date) datepart(date) {例:year(2019:03:25)输出:2019}
获取结果前几名 select top num … 末尾加limit num
函数在日期中添加或减去指定的时间间隔 DATEADD(datepart,number,date) DATE_ADD(date,INTERVAL expr type) ,DATE_SUB(date,INTERVAL expr type)

记录几条MySQL查询语句

查询0-29的数字
MySQL
SELECT @xi:=@xi+1 as number from 
    (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) xc1, 
		(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) xc2,
		(SELECT 1) xc3,   
		(SELECT @xi:=-1) xc0 
SqlServer
SELECT number FROM MASTER..spt_values WHERE TYPE = 'P' AND number >= 0 AND number <= 31 
获取当前月的第一天
MySQL
SELECT concat(date_format(LAST_DAY(now()),'%Y-%m-'),'01')day
SqlServer
SELECT substring( CONVERT ( VARCHAR, GETDATE ( ), 120 ), 1, 7 ) + '-01' DAY

再记录一个神奇的错误

TIMESTAMPDIFF( MONTH,u.RegistTime, SYSDATE( ) ) = 0 
使用这个函数的时候,sysdate左边的空格没消除,一直报1630错误,查了之后才知道函数与参数间出现空格会报1630异常。
所以敲空格需谨慎!

你可能感兴趣的:(数据库,SqlServer,MySQL,数据库函数)