DATEDIFF() SQL 函数2025年3月17日 | 阅读 7 分钟 在结构化查询语言(SQL)中,DATEDIFF() 是用于确定两个日期或时间间隔之间差值的函数。它是由 SQL 提供的一个强大函数,用于管理时间和日期。  本文将介绍 DATEDIFF() SQL 函数、其语法、用途及示例。 DATEDIFF() 函数语法在上述语法中,'interval' 定义了您想要查找差值的时间单位。interval 的值可以是 day, month, year, minute, hour, second, week 等。'startDate' 是开始日期或时间。'endDate' 是结束日期或时间。 带有缩写的 interval 值列表Interval | 缩写 |
---|
年份 | year, yy, yyyy | Day | day, dd, d | 月份 | month, mm, m | Quarter | quarter, qq, q | 周 | week, ww, wk | Nanosecond | nanosecond, ns | Microsecond | microsecond, us | Millisecond | millisecond, ms | 第二个 | second, ss, s | 分钟 | minute, mi | 小时 | hour, hh |
DATEDIFF() 函数的用途- 事件之间的时间间隔:用于计算两个事件之间的时间间隔。
- 调度和规划:用于找出完成特定任务所需的时间。
- 年龄计算:根据出生日期和当前日期,帮助计算人员年龄。
- 学术周期:帮助计算学术课程的长度。
- 库存管理:帮助追踪产品的保质期或存储期。
- 到期和续订日期:帮助找出到期和续订日期的剩余时间,以管理保修、许可证等。
- 旅行时长:旅行网站使用此函数来计算行程时长。
- 贷款计算:银行系统使用此函数根据贷款的开始和结束日期来查找贷款期限和利率。
- 订阅服务:通过计算用户的剩余订阅时间来帮助处理订阅服务。
- 项目管理:项目管理工具帮助查找任务时长、项目完成日期等。
- 员工请假管理:HR 系统使用此函数来跟踪员工的请假期限。
Microsoft SQL Server 中 DATEDIFF() 函数的示例我们将通过示例来充分理解 DATEDIFF() 函数。 注意:我们将使用 Microsoft SQL Server 的语法。不同数据库的语法可能有所不同。示例 1让我们考虑一个名为 'Orders' 的表,其中包含 orderId、orderDate 和 deliveryDate 字段。 Orders 表 orderId | orderDate | deliveryDate |
---|
1 | 2023-05-28 | 2023-06-28 | 2 | 2023-07-25 | 2023-08-21 | 3 | 2023-06-20 | 2023-08-29 | 4 | 2023-08-01 | 2023-08-30 | 5 | 2023-06-19 | 2023-07-26 |
1. 我们将考虑上述 'Orders' 表,并计算 orderDate 和 deliveryDate 之间的天数差。 我们将使用给定语句来查找天数 我们将使用给定语句来查找年数 orderId | orderDate | deliveryDate | daysDifference |
---|
1 | 2023-05-28 | 2023-06-28 | 31 | 2 | 2023-07-25 | 2023-08-21 | 27 | 3 | 2023-06-20 | 2023-08-29 | 70 | 4 | 2023-08-01 | 2023-08-30 | 29 | 5 | 2023-06-19 | 2023-07-26 | 37 |
2. 我们将考虑上述 'Orders' 表,并计算 orderDate 和 deliveryDate 之间的年数差。
orderId | orderDate | deliveryDate | yearsDifference |
---|
1 | 2023-05-28 | 2023-06-28 | 0 | 2 | 2023-07-25 | 2023-08-21 | 0 | 3 | 2023-06-20 | 2023-08-29 | 0 | 4 | 2023-08-01 | 2023-08-30 | 0 | 5 | 2023-06-19 | 2023-07-26 | 0 |
3. 我们将考虑上述 'Orders' 表,并计算 orderDate 和 deliveryDate 之间的月数差。 我们将使用给定语句来查找月数
orderId | orderDate | deliveryDate | monthsDifference |
---|
1 | 2023-05-28 | 2023-06-28 | 1 | 2 | 2023-07-25 | 2023-08-21 | 1 | 3 | 2023-06-20 | 2023-08-29 | 2 | 4 | 2023-08-01 | 2023-08-30 | 0 | 5 | 2023-06-19 | 2023-07-26 | 1 |
示例 2让我们考虑一个名为 'Products' 的表,其中包含 productId、productName 和 releaseDate 字段。 产品表 productId | productName | releaseDate |
---|
100 | 冰箱 | 2023-06-23 | 101 | 电视 | 2022-07-10 | 102 | Washing Machine | 2021-05-24 | 103 | Coffee Maker | 2020-04-20 | 104 | 打印机 | 2021-02-19 |
我们将考虑上述 'Products' 表,并计算产品 releaseDate 以来的月数。 我们将使用给定语句来查找月数 让我们考虑一个名为 'Employees' 的表,其中包含 employeeId、Name、hireDate 和 terminationDate 字段。 productId | productName | releaseDate | months_since_release |
---|
100 | 冰箱 | 2023-06-23 | 1 | 101 | 电视 | 2022-07-10 | 12 | 102 | Washing Machine | 2021-05-24 | 26 | 103 | Coffee Maker | 2020-04-20 | 39 | 104 | 打印机 | 2021-02-19 | 29 |
示例 3Employees 表 employeeId | 名称 | hireDate | terminationDate |
---|
200 | Anshika | 2020-05-21 | 2022-05-25 | 201 | Shruti | 2021-04-12 | 2022-05-20 | 202 | Deepanshu | 2021-08-18 | 2023-09-11 | 203 | Milan | 2022-05-27 | 2023-06-14 | 204 | Harsh | 2023-01-20 | 2023-07-19 |
我们将考虑上述 'Employees' 表,并计算员工的工作年限。 我们将使用给定语句来查找年数
employeeId | 名称 | hireDate | terminationDate | years_worked |
---|
200 | Anshika | 2020-05-21 | 2022-05-25 | 2 | 201 | Shruti | 2021-04-12 | 2022-05-20 | 1 | 202 | Deepanshu | 2021-08-18 | 2023-09-11 | 2 | 203 | Milan | 2022-05-27 | 2023-06-14 | 1 | 204 | Harsh | 2023-01-20 | 2023-07-19 | 0 |
示例 4让我们考虑一个名为 'Meetings' 的表,其中包含 meetingId、startTime 和 endTime 字段。 Meetings 表 meetingId | startTime | endTime |
---|
1 | 2023-07-18 09:00 | 2023-07-18 10:00 | 2 | 2023-07-18 11:00 | 2023-07-18 12:00 | 3 | 2023-07-19 10:00 | 2023-07-19 12:30 | 4 | 2023-07-20 11:00 | 2023-07-20 12:30 | 5 | 2023-07-20 05:00 | 2023-07-20 06:00 |
我们将考虑上述 'Meetings' 表,并计算每次会议的时长(以分钟为单位)。 要找出每次会议的持续时间,我们将使用给定语句
meetingId | startTime | endTime | meeting_duration_minutes |
---|
1 | 2023-07-18 09:00 | 2023-07-18 10:00 | 60 | 2 | 2023-07-18 11:00 | 2023-07-18 12:00 | 60 | 3 | 2023-07-19 10:00 | 2023-07-19 12:30 | 150 | 4 | 2023-07-20 11:00 | 2023-07-20 12:30 | 90 | 5 | 2023-07-20 05:00 | 2023-07-20 06:00 | 60 |
示例 5让我们考虑一个名为 'Persons' 的表,该表具有 personId、Name 和 birthDate 字段。 Meetings 表 personId | 名称 | birthDate |
---|
1 | Rahul | 2000-06-14 | 2 | Kajal | 2005-01-20 | 3 | Manish | 2010-02-25 | 4 | 拉格哈夫 | 1999-11-27 | 5 | Nishant | 1996-05-10 |
我们将考虑上述 'Persons' 表,并计算每个人的年龄(以年为单位)。 我们将使用给定语句来查找每个人的年龄
personId | 名称 | birthDate | age_years |
---|
1 | Rahul | 2000-06-14 | 23 | 2 | Kajal | 2005-01-20 | 18 | 3 | Manish | 2010-02-25 | 13 | 4 | 拉格哈夫 | 1999-11-27 | 24 | 5 | Nishant | 1996-05-10 | 27 |
示例 6让我们考虑一个名为 'Subscriptions' 的表,其中包含 subscriptionId、startDate 和 endDate 字段。 Meetings 表 subscriptionId | startDate | endDate |
---|
1 | 2022-11-13 | 2023-06-06 | 2 | 2022-12-10 | 2023-05-12 | 3 | 2023-04-05 | 2023-07-04 | 4 | 2023-05-02 | 2023-06-25 | 5 | 2023-03-18 | 2023-07-05 |
我们将考虑上述 'Subscriptions' 表,并计算每个订阅的时长(以周为单位)。 我们将使用给定语句来查找每个订阅的时长
subscriptionId | startDate | endDate | duration_weeks |
---|
1 | 2022-11-13 | 2023-06-06 | 29 | 2 | 2022-12-10 | 2023-05-12 | 22 | 3 | 2023-04-05 | 2023-07-04 | 13 | 4 | 2023-05-02 | 2023-06-25 | 8 | 5 | 2023-03-18 | 2023-07-05 | 16 |
示例 7让我们考虑一个名为 'Projects' 的表,其中包含 projectId、startDate 和 endDate 字段。 Projects 表 projectId | startDate | endDate |
---|
1 | 2023-01-10 | 2023-05-02 | 2 | 2023-03-09 | 2023-07-13 | 3 | 2023-04-16 | 2023-05-11 | 4 | 2023-02-11 | 2023-04-30 | 5 | 2023-06-02 | 2023-08-25 |
我们将考虑上述 'Projects' 表,并计算每个项目的时长(以天为单位)。 我们将使用给定语句来查找每个项目的时长
projectId | startDate | endDate | project_duration_days |
---|
1 | 2023-01-10 | 2023-05-02 | 112 | 2 | 2023-03-09 | 2023-07-13 | 126 | 3 | 2023-04-16 | 2023-05-11 | 25 | 4 | 2023-02-11 | 2023-04-30 | 78 | 5 | 2023-06-02 | 2023-08-25 | 84 |
示例 8让我们考虑一个名为 'Logs' 的表,该表具有 logId、logTime 和 previousLogTime 字段。 Logs 表 logId | logTime | previousLogTime |
---|
1 | 2023-07-21 10:30 | 2023-07-21 09:00 | 2 | 2023-07-21 09:30 | 2023-07-21 08:00 | 3 | 2023-07-21 11:30 | 2023-07-21 10:00 | 4 | 2023-07-21 05:30 | 2023-07-21 03:00 | 5 | 2023-07-21 07:00 | 2023-07-21 06:00 |
我们将考虑上述 'Logs' 表,并计算 logTime 和 previousLogTime 之间的时间差(以分钟为单位)。 我们将使用给定语句来查找时间差
logId | logTime | previousLogTime | time_diff_minutes |
---|
1 | 2023-07-21 10:30 | 2023-07-21 09:00 | 90 | 2 | 2023-07-21 09:30 | 2023-07-21 08:00 | 90 | 3 | 2023-07-21 11:30 | 2023-07-21 10:00 | 90 | 4 | 2023-07-21 05:30 | 2023-07-21 03:00 | 150 | 5 | 2023-07-21 07:00 | 2023-07-21 06:00 | 60 |
示例 9让我们考虑一个名为 'Users' 的表,其中包含 userId、Name 和 lastLoginDate 字段。 Users 表 userId | 名称 | lastLoginDate |
---|
1 | Abhishek | 2023-06-19 | 2 | Vishal | 2023-05-01 | 3 | Avni | 2023-07-02 | 4 | Khushi | 2023-06-10 | 5 | Himanshu | 2023-07-05 |
我们将考虑上述 'Users' 表,并计算每个用户上次登录以来的天数。 我们将使用给定语句来查找天数
userId | 名称 | lastLoginDate | days_since_last_login |
---|
1 | Abhishek | 2023-06-19 | 34 | 2 | Vishal | 2023-05-01 | 83 | 3 | Avni | 2023-07-02 | 21 | 4 | Khushi | 2023-06-10 | 43 | 5 | Himanshu | 2023-07-05 | 18 |
示例 10让我们考虑一个名为 'Sales' 的表,其中包含 saleId、saleDate 和 previous_quarter_end_date 字段。 Sales 表 saleId | saleDate | previous_quarter_end_date |
---|
1 | 2023-05-01 | 2023-04-02 | 2 | 2023-06-09 | 2023-05-06 | 3 | 2023-07-18 | 2023-06-17 | 4 | 2023-06-18 | 2023-05-06 | 5 | 2023-07-16 | 2023-06-10 |
我们将考虑上述 'Sales' 表,并计算 saleDate 和 previous_quarter_end_date 之间的季度数。 我们将使用给定语句来查找季度数
saleId | saleDate | previous_quarter_end_date | quartersDifference |
---|
1 | 2023-05-01 | 2023-04-02 | 0 | 2 | 2023-06-09 | 2023-05-06 | 0 | 3 | 2023-07-18 | 2023-06-17 | 1 | 4 | 2023-06-18 | 2023-05-06 | 0 | 5 | 2023-07-16 | 2023-06-10 | 1 |
结论在本文中,我们学习了 DATEDIFF() SQL 函数,它用于查找两个间隔之间的差值。我们获得了关于此函数用途的知识。我们通过各种示例了解了 DATEDIFF() SQL 函数在实际场景中的用法,例如计算人员年龄、计算两个日期或时间之间的差值等等。
|