题解 | 广告点击的高峰期,窗户口函数解法兼时间函数总结
广告点击的高峰期
https://www.nowcoder.com/practice/6756d65784f9413b8505c1d0c6754b3a
select click_hour, click_cnt
from (
select hour(click_time) click_hour,
count(*) click_cnt,
dense_rank() over(order by count(*) desc) click_rank
from user_ad_click_time
group by click_hour
)t
where click_rank = 1
1. 获取当前日期的函数
- CURDATE():这是 MySQL 中用于获取当前日期的函数,返回值的格式为
YYYY-MM-DD。例如在 MySQL 中执行SELECT CURDATE();,若当前日期是 2025 年 10 月 21 日 ,则返回2025-10-21。 - CURRENT_DATE() :功能与
CURDATE()相同,也是获取当前日期,在 MySQL、PostgreSQL 等数据库中都可以使用。 - CURRENT_DATE:是
CURRENT_DATE()的简化写法 ,作用一样,用于获取当前日期。
2. 获取当前时间的函数
- CURTIME():在 MySQL 中,该函数用于获取当前时间,返回值格式为
HH:MM:SS。比如执行SELECT CURTIME();,如果当前时间是 14 点 30 分 15 秒 ,则返回14:30:15。 - CURRENT_TIME():在 MySQL、PostgreSQL 等数据库中都可使用,用于获取当前时间。
- CURRENT_TIME:是
CURRENT_TIME()的简写形式,用于获取当前时间。
3. 获取当前日期和时间的函数
- CURRENT_TIMESTAMP():MySQL、PostgreSQL 等数据库都支持该函数,返回当前日期和时间,格式通常是
YYYY-MM-DD HH:MM:SS。例如在 MySQL 中执行SELECT CURRENT_TIMESTAMP();, 若当前是 2025 年 10 月 21 日 14 点 30 分 15 秒 ,则返回2025-10-21 14:30:15。 - CURRENT_TIMESTAMP:
CURRENT_TIMESTAMP()的简化写法,功能一致。 - LOCALTIME():在 MySQL 中,该函数返回当前的日期和时间,和
CURRENT_TIMESTAMP()类似。 - LOCALTIME:
LOCALTIME()的简写形式,返回当前日期和时间。 - LOCALTIMESTAMP():在 MySQL 等数据库中,用于返回当前的日期和时间。
- LOCALTIMESTAMP:是
LOCALTIMESTAMP()的简写,作用是获取当前日期和时间。 - NOW():MySQL 中常用,返回当前日期和时间,格式为
YYYY-MM-DD HH:MM:SS。 - SYSDATE():MySQL 中使用,返回执行该函数时的日期和时间,与
NOW()不同的是,NOW()返回的是语句开始执行的时间,而SYSDATE()返回的是函数执行的实时时间。
4. 日期和时间运算函数
- DATEDIFF(d1,d2):用于计算两个日期之间的差值,返回值是两个日期相差的天数,在 MySQL 等数据库中可用。例如
SELECT DATEDIFF('2025-10-25', '2025-10-21');,结果为4。 - TIMEDIFF(t1,t2):在 MySQL 中使用,计算两个时间的差值,返回结果的格式是
HH:MM:SS。比如SELECT TIMEDIFF('15:30:00', '14:30:00');,返回01:00:00。 - TIMESTAMPDIFF(interval,d1,d2):可以计算两个日期或时间之间的差值,差值的单位由
interval参数指定,interval可以是YEAR(年)、MONTH(月)、DAY(日)、HOUR(小时)等。例如SELECT TIMESTAMPDIFF(HOUR, '2025-10-21 12:00:00', '2025-10-21 15:00:00');,结果为3。
5. 日期和时间的格式化函数
DATE_FORMAT(date,format):在 MySQL 中使用,用于将日期按照指定的格式进行格式化输出。format参数中,常见的占位符含义如下:
- y:两位数的年份,如
25。 - Y:四位数的年份,如
2025。 - M:英文月份全称,如
October。 - m:两位数字表示的月份,
01-12。 - W:英文星期全称,如
Tuesday。 - w:数字表示的星期,
0(星期日) -6(星期六)。 - H:24 小时制的小时数,
00-23。 - h:12 小时制的小时数,
01-12。 - S:两位数字表示的秒数,
00-59。 - s:功能同
S,表示两位数字的秒数。
例如,SELECT DATE_FORMAT('2025-10-21 14:30:15', '%Y-%m-%d %H:%i:%s'); ,返回2025-10-21 14:30:15 ,这里%i和%m类似,都表示分钟。