网站首页 > 知识剖析 正文
作为一名程序员,不知道你在求职面试时有没有遇到要求手写sql语句的。
我就遇到过,有次我到一家软件公司应聘软件开发岗位时,面试官就问了我这样一个问题,还拿纸笔叫我手写一条sql。
题目是这样的:
Mysql数据库中有一张用户表A,里面有用户编号,身份证号码,如何根据身份证计算出每个用户的具体年龄?
其实这道题目不难,可以从身份证中把用户的年份抽出来,再和当前的年份对比,就可以了。字符串截取函数substring倒是记得,对于年份相减的函数记不起来,知道有这么一个函数,奈何英文水平有限,拼写不出timestampdiff这个函数,缺点彻底暴露了,尴尬了。
要不是手写,直接上机操作那就可以避免了。这也给我一个提示,得好好提高自己的英文词汇量才行,学习知识时,不能一知半解,浅尝辄止。要想学习好,必须养成独立钻研、务求甚解的习惯。
今天来聊一聊mysql timestampdiff()函数用法。
首先来看看官方对这个函数的描述
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
简单翻译下,TIMESTAMPDIFF函数返回datetime_expr2 ? datetime_expr1,
的结果, 其中datetime_expr1和datetime_expr2是DATE或DATETIME表达式。
TIMESTAMPDIFF函数允许其参数具有混合类型,例如,datetime_expr1是DATE值,datetime_expr2可以是DATETIME值。 如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”的DATETIME值。
unit参数是确定(datetime_expr2-datetime_expr1)的结果的单位,表示为整数。 以下是有效单位:
- MICROSECOND 微秒
- SECOND 秒
- MINUTE 分钟
- HOUR 小时
- DAY 天
- WEEK 周
- MONTH 月份
- QUARTER
- YEAR 年份
以文章开头的题目为例,
select user_id ,timestampdiff(year,substring(card_num, 7, 8),now()) as age from a
如果想统计月份,只需要将unit参数从year参数换成month即可,例如
select user_id ,timestampdiff(month,substring(card_num, 7, 8),now()) as age from a
同样,如果想统计天数,我们将unit参数换成day即可。
select user_id ,timestampdiff(day,substring(card_num, 7, 8),now()) as age from a
timestampdiff在很多场景会使用到,比如公司统计员工的工龄、统计订单平均发货时间等。
还是应该重视的。另外,还有TIMESTAMPADD、
TIMESTAMP都应该掌握,建议系统性学习,这样归纳总结起来比较容易理解,掌握得更透彻。要是学得比较零散,不利于构建自己的知识体系。
由于笔者知识水平有限,文中错漏之处在所难免,如有不足之处,欢迎纠正,感谢。
拓展:其他数据库查询日期间隔函数
hive中查询日期间隔的函数是datediff:
select datediff('2022-03-31','2022-03-01');
输出结果:30
presto中函数是date_diff,语法和hive有所不同:
select date_diff('day',cast('2022-03-01' as date),cast('2022-03-31' as date));
输出结果:30
细心的你应该知道两者在语法上有什么不同了。
date_diff函数:
presto中date_diff函数和hive datediff不同点。
- 需要提供参数'day',表示查询的是天数间隔;要查询小时,则提供参数'hour'
- 后面传参限制为date、timestamp类型;
- 需要注意的是后面减去前面。
猜你喜欢
- 2024-11-12 Linux运维面试sql语句2 面试linux运维工程师提问哪些问题
- 2024-11-12 PowerBI时间日期函数 powerbi日期相减
- 2024-11-12 数据库日期与时间函数概览 数据库时间日期型
- 2024-11-12 画像笔记7- 非实时标签-统计标签-最近来访标签
- 2024-11-12 还不用Excel算算离国庆还有多少天?Get这11个神技每天省2小时!
- 2024-11-12 种猪生产数据预处理方法之数据清洗
- 2024-11-12 Mysql数据库常见函数(下)——日期时间函数
- 2024-11-12 MySQL常用函数之日期函数 mysql日期yyyymmdd
- 2024-11-12 MySQL常用函数,程序员真得看看 mysql常见函数
- 2024-11-12 日期数据如何比较? 日期比较js
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)