最近數據庫從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異常。
所以敲空格需謹慎!