MySQL和SQlServer的區別
說明:在一些常用的SQL語句中,MySQL和SQLServer存在有一些區別,后續我也會將我遇到的不同點持續更新在這篇博客中。
1. 獲取當前時間
SQLServer:
-- SQLServer
-- 1.獲取當前時間
SELECT GETDATE();
-- 2.查詢時間間隔,SQLServer中可以自由填寫時間單位
select DATEDIFF(day,GETDATE(), '2023-10-01');
MySQL
-- MySQL
-- 1.獲取當前時間
SELECT NOW();
-- 2.獲取當前時間和一個時間相差幾天
select DATEDIFF(NOW(), '2023-10-01');
-- 3.計算當前時間減去一天
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
關于DATE_SUB的具體說明:
DATE_SUB(date, INTERVAL expr unit)
- date: 這是你要從中減去時間間隔的日期或日期時間值。它可以是一個日期字面量、一個日期時間字面量,或者一個返回日期/日期時間值的表達式或列。
- INTERVAL: 這是固定的關鍵字,用于指示緊接著的表達式和單位表示一個時間間隔。
- expr: 這是一個數值表達式,表示要減去的時間間隔的數量。
- unit: 這是時間間隔的單位,它可以是以下值之一:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER 或 YEAR。
2. 限制查詢結果集
SQLServer:
SELECT * FROM table_name
ORDER BY id
OFFSET 0 ROWS FETCH NEXT 2 ROWS ONLY
說明:
- OFFSET n ROWS:從第n行開始
- FETCH NEXT m ROWS ONLY:獲取m行數據
MySQL
SELECT * FROM table_name
ORDER BY id
LIMIT 2 OFFSET 2;
LIMIT的說明:
- LIMIT m:獲取最多 m 行數據。
- OFFSET n:跳過前 n 行數據。
2. 聯表更新
SQLServer:
UPDATE table1
SET table1.column1 = table2.column1
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
MySQL
UPDATE table1
LEFT JOIN table2 ON table1.id = table2.id
SET table1.column1 = table2.column1