使用 INTERVAL 的持续时间

INTERVAL 数据类型存储持续时间,即时间长度。两个 DATETIME 值之间的差就是 INTERVAL,它表示那两个值之间的那一段时间。下列示例可能有助于您弄清楚这些差:
  • 一个雇员在 1997 年 1 月 21 日开始工作(DATE 或者是 DATETIME)。
  • 她已工作了 254 天(一个 INTERVAL 值,也就是 TODAY 函数与起始 DATE 或 DATETIME 值之间的差)。
  • 她每天从 0900 点(一个 DATETIME 值)开始工作。
  • 她工作 8 小时(一个 INTERVAL 值),其间 45 分钟用来吃午餐(另一个 INTERVAL 值)。
  • 她的下班时间是 1745 点(她开始工作时的 DATETIME 与两个 INTERVAL 之和)。
与 DATETIME 相似,INTERVAL 是一系列具有不同精度的数据类型。INTERVAL 值可以表示年和月的计数;它也可以表示天、小时、分钟、秒或秒的小数的计数;可能的精度有 18 种。INTERVAL 值的大小的范围是 2 到 12 个字节,这取决于表 1 显示的公式。
表 1. INTERVAL 数据类型的精度
精度 大小(将小数大小取整到下一个整字节) 精度 大小(将小数大小取整到下一个整字节)
年 (p) 到年 1 + p/2 小时 (p) 到分钟 2 + p/2
年 (p) 到月 2 + p/2 小时 (p) 到秒 3 + p/2
月 (p) 到月 1 + p/2 小时 (p) 到小数 (f) 4 + (p + f)/2
天 (p) 到天 1 + p/2 分钟 (p) 到分钟 1 + p/2
天 (p) 到小时 2 + p/2 分钟 (p) 到秒 2 + p/2
天 (p) 到分钟 3 + p/2 分钟 (p) 到小数 (f) 3 + (p + f)/2
天 (p) 到秒 4 + p/2 秒 (p) 到秒 1 + p/2
天 (p) 到小数 (f) 5 + (p + f)/2 秒 (p) 到小数 (f) 2 + (p + f)/2
小时 (p) 到小时 1 + p/2 小数到小数 (f) 1 + f/2

INTERVAL 值可以是负数或正数。可以对它们进行加减运算,也可以通过乘以或除以某个数来将它们缩放。对于 DATE 或 DATETIME,情况并非如此。您可以合理地问道“到 4 月 23 日为止的天数的一半是多少?”,但“4 月 23 日的一半是什么?”却不合理。