当前位置:网站首页>SQL函数 TIMESTAMPDIFF
SQL函数 TIMESTAMPDIFF
2022-08-01 16:02:00 【用户7741497】
SQL函数 TIMESTAMPDIFF
一个标量日期/时间函数,它返回指定日期部分的两个时间戳之间差异的整数计数。
大纲
{fn TIMESTAMPDIFF(interval-type,startdate,enddate)}参数
interval-type- 返回值将表示的时间/日期间隔类型。startdate- 时间戳值表达式。enddate- 将与startdate进行比较的时间戳值表达式。
描述
TIMESTAMPDIFF 函数返回指定日期部分间隔(秒、天、周等)的两个给定时间戳之间的差异(即,从另一个中减去一个时间戳)。返回的值是一个 INTEGER,即两个时间戳之间的这些间隔数。 (如果 enddate 早于 startdate,则 TIMESTAMPDIFF 返回负 INTEGER 值。)
开始日期和结束日期是时间戳。这些时间戳可以是 %Library.TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff) 或 %Library.PosixTime 数据类型格式(编码的 64 位有符号整数)。
间隔类型参数可以是以下时间戳间隔之一:
SQL_TSI_FRAC_SECONDSQL_TSI_SECONDSQL_TSI_MINUTESQL_TSI_HOURSQL_TSI_DAYSQL_TSI_WEEKSQL_TSI_MONTHSQL_TSI_YEAR
这些时间戳间隔可以使用单引号或双引号来指定,带或不带引号。它们不区分大小写。
TIMESTAMPDIFF 和 DATEDIFF 不处理季度quarters (3 个月间隔)。
请注意,TIMESTAMPDIFF 只能用作 ODBC 标量函数(使用大括号语法)。可以使用 DATEDIFF 通用函数对时间戳执行类似的时间/日期比较操作。
%TimeStamp 格式化
如果 startdate 或 enddate 参数采用 %Library.TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff),则适用以下规则:
- 如果任一时间戳表达式仅指定时间值并且间隔类型指定日期间隔(天、周、月或年),则在计算结果间隔计数之前,时间戳的缺失日期部分默认为
“1900–01–01”. - 如果任一时间戳表达式仅指定日期值并且间隔类型指定时间间隔(小时、分钟、秒、小数秒),则在计算结果间隔计数之前,时间戳的缺失时间部分默认为
“00:00:00.000”. - 可以包含或省略任意位数精度的小数秒。
SQL_TSI_FRAC_SECOND以千分之一秒的整数计数形式返回小数秒的差异(精度为三位数)。%PosixTime值始终包含六位精度。
范围和值检查
TIMESTAMPDIFF 对输入值执行以下检查。
startdate和enddate的所有指定部分必须有效,然后才能执行任何TIMESTAMPDIFF操作。- 日期字符串必须完整且格式正确,其中包含适当数量的元素和每个元素的数字,以及适当的分隔符。年份必须指定为四位数。无效的日期值会导致
SQLCODE -8错误。 - 日期值必须在有效范围内。年:0001 到 9999。月:1 到 12。日:1 到 31。小时:00 到 23。分:0 到 59。秒:0 到 59。一个月中的天数必须与月和年相匹配。例如,日期
“02–29”仅在指定年份是闰年时有效。无效的日期值会导致SQLCODE -8错误。 - 小于 10(月和日)的日期值可能包括或省略前导零。不允许使用其他非规范整数值。因此,
Day值“07”或“7”有效,但“007”、“7.0”或“7a”无效。 - 时间值可以全部或部分省略。如果
startdate或enddate指定了不完整的时间,则为未指定的部分提供零。 - 小于 10 的小时值必须包含前导零。省略此前导零会导致
SQLCODE -8错误。
示例
以下示例返回 7,因为第二个时间戳 (2017-12-20 12:00:00) 比第一个大 7 个月:
SELECT {fn TIMESTAMPDIFF(SQL_TSI_MONTH,
'2017-5-19 00:00:00','2017-12-20 12:00:00')}
7以下示例返回 566,因为第二个时间戳 ('12:00:00')) 比第一个时间戳 (02:34:12) 大 566 分钟:
SELECT {fn TIMESTAMPDIFF(SQL_TSI_MINUTE,'02:34:12','12:00:00')}
566以下示例返回 -1440,因为第二个时间戳比第一个小一天(1440 分钟):
SELECT {fn TIMESTAMPDIFF(SQL_TSI_MINUTE,'2017-12-06','2017-12-05')}
-1440边栏推荐
- ODrive开发 #1 ODrive固件开发指南[通俗易懂]
- Can MySQL do two-way synchronization of multiple vps?
- 五分钟带你上手ShardingJDBC实现MySQL分库分表
- 珠海市生物安全P3实验室主体结构封顶
- MySQL【创建和管理表】
- Arduino无线下载 Arduino USB接口无线自动下载程序
- 打破文件锁限制,以存储力量助力企业增长新动力
- Stock Strategy 02 | Technology Timing + Industry Factors + Market Value Rotation
- Spark: Cluster Computing with Working Sets
- js判断是pc端还是移动端(包括ipad)
猜你喜欢

pynlpir更新license Error: unable to fetch newest license解决方案

8年软件测试工程师感悟 —— 写给还在迷茫中的朋友

主流定时任务解决方案全横评

便携烙铁开源系统IronOS,支持多款便携DC, QC, PD供电烙铁,支持所有智能烙铁标准功能

面试必问的HashCode技术内幕

百图生科卓越开发者计划全面升级暨《计算免疫问题白皮书》发布

uniapp 获取cookie与携带cookie请求数据

MySQL【创建和管理表】

Stored procedures in MySQL (detailed)

Inflation continues, Kenya's food security a concern
随机推荐
月薪12K,蝶变向新勇往直前,我通过转行软件测试实现月薪翻倍...
DHCP配置命令(DHCP配置命令)
gconf/dconf编程实战(1)gconf和dconf介绍
商业智能BI业务分析思维:供应链分析 - 什么是牛鞭效应(一)
lombok builder重写
String comparison size in MySQL (date string comparison problem)
【无标题】
MySQL INTERVAL 关键字指南
LeetCode50天刷题计划(Day 9—— 整数转罗马数字(20.40-22.10)
Slider/Carousel图片切换支持触摸屏
mysql 面试题
Break the limit of file locks and use storage power to help enterprises grow new momentum
kubelet node pressure eviction
Zhaoqi Science and Technology Innovation Platform attracts talents and attracts talents, and attracts high-level talents at home and abroad
使用Canvas 实现手机端签名
ESP8266-Arduino编程实例-MLX90614红外测温传感器驱动
ODrive开发 #1 ODrive固件开发指南[通俗易懂]
js to determine whether it is a pc or a mobile terminal (including ipad)
untiy Resorces目录动态加载资源
实习日报-2022-7-30