MySQL和SQlServer的区别
说明:在一些常用的SQL语句中,MySQL和SQLServer存在有一些区别,后续我也会将我遇到的不同点持续更新在这篇博客中。
1. 获取当前时间
SQLServer:
sql
-- SQLServer
-- 1.获取当前时间
SELECT GETDATE();
-- 2.查询时间间隔,SQLServer中可以自由填写时间单位
select DATEDIFF(day,GETDATE(), '2023-10-01');
MySQL
sql
-- MySQL
-- 1.获取当前时间
SELECT NOW();
-- 2.获取当前时间和一个时间相差几天
select DATEDIFF(NOW(), '2023-10-01');
-- 3.计算当前时间减去一天
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
关于DATE_SUB的具体说明:
sql
DATE_SUB(date, INTERVAL expr unit)
- date: 这是你要从中减去时间间隔的日期或日期时间值。它可以是一个日期字面量、一个日期时间字面量,或者一个返回日期/日期时间值的表达式或列。
- INTERVAL: 这是固定的关键字,用于指示紧接着的表达式和单位表示一个时间间隔。
- expr: 这是一个数值表达式,表示要减去的时间间隔的数量。
- unit: 这是时间间隔的单位,它可以是以下值之一:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER 或 YEAR。
2. 限制查询结果集
SQLServer:
sql
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
sql
SELECT * FROM table_name
ORDER BY id
LIMIT 2 OFFSET 2;
LIMIT的说明:
- LIMIT m:获取最多 m 行数据。
- OFFSET n:跳过前 n 行数据。
2. 联表更新
SQLServer:
sql
UPDATE table1
SET table1.column1 = table2.column1
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
MySQL
sql
UPDATE table1
LEFT JOIN table2 ON table1.id = table2.id
SET table1.column1 = table2.column1