最近碰到的一些SQL的小知识,做点笔记。
1. DATEDIFF() 函数 :DATEDIFF(datepart,startdate,enddate)
startdate 早于 enddate 则返回正值,否则返回负值。比如
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') 返回 1
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') 返回-1
datepart | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
纳秒 | ns |
2. ROW_NUMBER() OVER()函数:row_number() over(partition by 分组列 order by 排序列 desc)
over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。
这篇写得还蛮细:https://blog.csdn.net/qq_25221835/article/details/82762416
3. date_sub() 函数: DATE_SUB(date,INTERVAL expr type)
从date往前指定的时间间隔。
Type 值 |
---|
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECOND |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |