LightDB - datediff 函数增强[mysql兼容]

LightDB在 23.4 版本对原先支持的mysql的datediff函数进行了增强,由原先只支持如下函数匹配:

DATEDIFF(expr1 timestamp,expr2 timestamp) RETURN integer
DATEDIFF(expr1 text,expr2 text) RETURN integer

扩展到支持如下函数匹配:

DATEDIFF(expr1 timestamp,expr2 timestamp) RETURN integer
DATEDIFF(expr1 text,expr2 text) RETURN integer
DATEDIFF(expr1 timestamptz,expr2 timestamptz) RETURN integer
DATEDIFF(expr1 timestamptz,expr2 timestamp) RETURN integer
DATEDIFF(expr1 timestamp,expr2 timestamptz) RETURN integer
DATEDIFF(expr1 date, expr2 date) RETURN integer

datediff 简介

datediff 用于计算两个日期的差值,下面是mysql中对其的介绍:

DATEDIFF() returns expr1 − expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.

注意点

  • 在LightDB 中不支持time 类型, mysql支持(在mysql中time类型可以大于24小时,因此差值可以不为0)
  • LightDB 对于错误格式的日期会报错,mysql 会截断,并warning

示例

lightdb:

lightdb@test_m=# SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');datediff 
----------1
(1 row)lightdb@test_m=# SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');datediff 
-----------31
(1 row)lightdb@test_m=# SELECT DATEDIFF(cast('2007-12-31 23:59:59' as datetime),cast('2007-12-30' as datetime));datediff 
----------1
(1 row)lightdb@test_m=# SELECT DATEDIFF(cast('2007-12-31 23:59:59' as date),cast('2007-12-30' as date));datediff 
----------1
(1 row)lightdb@test_m=# SELECT DATEDIFF(cast('10:00:00' as time),cast('11:00:00' as time));
ERROR:  function datediff(time without time zone, time without time zone) does not exist
LINE 1: SELECT DATEDIFF(cast('10:00:00' as time),cast('11:00:00' as ...^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
lightdb@test_m=# 
lightdb@test_m=# SELECT DATEDIFF(20121212,20121215);datediff 
-----------3
(1 row)lightdb@test_m=# SELECT DATEDIFF(20121212.5,20121215.1);
ERROR:  invalid input syntax for type date: "20121212.5"
CONTEXT:  SQL function "datediff" statement 1
lightdb@test_m=# 

mysql:

mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
+----------------------------------------------+
| DATEDIFF('2007-12-31 23:59:59','2007-12-30') |
+----------------------------------------------+
|                                            1 |
+----------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
+----------------------------------------------+
| DATEDIFF('2010-11-30 23:59:59','2010-12-31') |
+----------------------------------------------+
|                                          -31 |
+----------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF(cast('2007-12-31 23:59:59' as datetime),cast('2007-12-30' as datetime));
+----------------------------------------------------------------------------------+
| DATEDIFF(cast('2007-12-31 23:59:59' as datetime),cast('2007-12-30' as datetime)) |
+----------------------------------------------------------------------------------+
|                                                                                1 |
+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF(cast('2007-12-31 23:59:59' as date),cast('2007-12-30' as date));
+--------------------------------------------------------------------------+
| DATEDIFF(cast('2007-12-31 23:59:59' as date),cast('2007-12-30' as date)) |
+--------------------------------------------------------------------------+
|                                                                        1 |
+--------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF(cast('10:00:00' as time),cast('11:00:00' as time));
+-------------------------------------------------------------+
| DATEDIFF(cast('10:00:00' as time),cast('11:00:00' as time)) |
+-------------------------------------------------------------+
|                                                           0 |
+-------------------------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF(cast('100:00:00' as time),cast('11:00:00' as time));
+--------------------------------------------------------------+
| DATEDIFF(cast('100:00:00' as time),cast('11:00:00' as time)) |
+--------------------------------------------------------------+
|                                                            4 |
+--------------------------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF(20121212,20121215);
+-----------------------------+
| DATEDIFF(20121212,20121215) |
+-----------------------------+
|                          -3 |
+-----------------------------+
1 row in set (0.00 sec)mysql> SELECT DATEDIFF(20121212.5,20121215.1);
+---------------------------------+
| DATEDIFF(20121212.5,20121215.1) |
+---------------------------------+
|                              -3 |
+---------------------------------+
1 row in set, 2 warnings (0.00 sec)mysql> show warnings;
+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect date value: '20121212.5' |
| Warning | 1292 | Truncated incorrect date value: '20121215.1' |
+---------+------+----------------------------------------------+
2 rows in set (0.00 sec)mysql> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JeecgBoot 框架升级 Spring Boot 3.1.5

Spring Boot 从 2.7.10升级到3.1.5有以下几个点需要注意。 JDK版本支持从JDK 17-19版本javax.servlet切换到jakarta.servletspring.redis配置切换为spring.data.redisSpring Cloud 2022.0.4Spring Cloud Alibaba 2022.0.0.0 除以上三点外,其它都是平滑升级&#…

微信小程序之猜数字和猜拳小游戏

目录 效果图 app.json 一、首页(index3)的代码 wxml代码 wxss代码 二、猜数字页面(index)代码 wxml代码 wxss代码 js代码 三.游戏规则页面(logs)代码 wxml代码 wxss代码 四.猜拳页面&#xff…

ElasticSearch篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、了解ElasticSearch 深翻页的问题及解决吗?二、熟悉ElasticSearch 性能优化三、ElasticSearch 查询优化手段有哪些?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

编程过程中出现bug如何应对?

编程过程中出现bug如何应对? 1.找错误原因 如果完全不知道出错的原因,或者说存在着很多错误的有原因,----》控制变量法 例如,昨天我在使用torchrun 多卡并行一个程序的时候,出现了大量的bug, 于是我将报错信息放在网…

visual Studio MFC 平台实现拉普拉斯和拉普拉斯与直方图均衡化与中值滤波相结合实现比较

拉普拉斯变换的原理与应用 本文使用visual Studio MFC 平台实现图像增强中的拉普拉斯变换,同时拉普拉斯一般不会单独使用,与其他平滑操作相结合,本文使用了拉普拉斯与直方图均衡化以及与中值滤波相结合,也对三种方式进行了对比 关…

如何提高Pycharm的使用体验?

汉化 文件---设置---插件---chinese---安装---重启ide 代码补全 tabnine 文件---设置---插件---tabnine---安装---重启ide 重启ide后生效,补全效果如下 自定义背景 文件---设置---外观---背景图像---选择图片---调整透明度保存即可 设置头部声明 英文版…

基于Java SSM框架实现社区疫情防控管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现社区疫情防控管理系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区疫情防控管理信息系统当然也不能排除在外。社区疫情防控管理信息系…

记录 | CUDA编程中使用#ifdef指令控制生成CPU和GPU代码

CUDA编程中使用#ifdef指令控制生成CPU和GPU代码 比如&#xff1a; #include <cstdio> #include <cuda_runtime.h>__host__ __device__ void say_hello(){ #ifdef __CUDA_ARCH__printf("Hello, world from GPU!\n"); #elseprintf("Hello, world fr…

Unity3D对CSV文件操作(创建、读取、写入、修改)

系列文章目录 Unity工具 文章目录 系列文章目录前言一、Csv是什么&#xff1f;二、创建csv文件2-1、构建表数据2-2、创建表方法2-3、完整的脚本&#xff08;第一种方式&#xff09;2-4、运行结果2-5、完整的脚本&#xff08;第二种方式&#xff09;2-6、运行结果2-7、想用哪种…

springboot075电影评论网站系统设计与实现

springboot075电影评论网站系统设计与实现 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVf…

ocpm @ ecpm @ ocpc@ ecpc

"o" 采用更准确的点击/转化率预估计值&#xff0c;将广告展示给最容易产生转化的用户。 以目标出价优化 千次展现成本 ocpm 以目标出价优化 单次点击出价 ocpc "e" 预估转化成本 ecpm 预估千次展现成本

flask 异步编程 asyncio

1. Flask 与异步编程 在编写Web应用程序时&#xff0c;有时需要调用可能需要一些时间的外部服务或执行耗时操作的函数。在传统的同步编程中&#xff0c;这将导致整个应用程序阻塞&#xff0c;直到该函数返回结果。为了提高应用程序的性能和响应能力&#xff0c;我们可以使用异…

Java中常用的垃圾回收器

在Java的世界里&#xff0c;"垃圾回收"是一个让许多开发者即侍俯首也感到神秘的术语。垃圾回收&#xff08;Garbage Collection, GC&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一个重要部分&#xff0c;它帮助开发者管理内存&#xff0c;确保程序能有效并…

面试题:公司规定所有接口都用 post 请求,这是为什么?

文章目录 前言get 与 post 的区别所有接口都用 post 请求&#xff1f;网友程墨 Morgan网友苏莉安网友大宽宽 前言 最近在逛知乎的时候发现一个有趣的问题&#xff1a;公司规定所有接口都用 post 请求&#xff0c;这是为什么&#xff1f; 看到这个问题的时候其实我也挺有感触的…

可编程电子负载的应用前景如何

可编程电子负载是一种模拟真实负载的电子设备&#xff0c;它可以模拟各种不同类型和规格的负载&#xff0c;如电阻、电容、电感等。通过可编程的方式&#xff0c;用户可以根据需要灵活地调整负载的大小、电压、电流等参数&#xff0c;以满足不同的测试需求。随着科技的不断发展…

pod容器内无法访问集群外部主机ipv6地址

一、背景 同事反馈他这边有一环境出现pod容器内无法请求集群外部主机ipv6地址&#xff0c;但是在pod所在集群所主机上是可以请求到外部主机ipv6地址。 二、问题处理过程 首先主机和主机之间ipv6地址能通讯&#xff0c;说明主机之间网络是没啥问题&#xff0c;哪问题就出在容器…

微信小程序已经审核通过但是提示订单中心path不通过

设置-基本设置-服务内容声明 更改path重新审核即可

history路由解决刷新出现404的问题

本文具体重点介绍怎么解决浏览器路由&#xff08;history模式&#xff09;解决404的问题。 在项目打包上线时&#xff0c;如果采用的是哈希模式&#xff0c;不会出现404&#xff0c;原因是 url 中 # 号后面的内容不会发给后端当作资源路径请求服务器。 具体流程&#xff08;哈…

ABCDE类网络的划分及保留网段

根据IP地址的分类&#xff0c;IP地址被分为A、B、C、D和E五类。下面是对ABCDE类网络的划分及保留网段的详细描述&#xff1a; A类网络&#xff1a;范围从1.0.0.0到127.0.0.0&#xff0c;网络地址的最高位必须是“0”&#xff0c;可用的A类网络有127个&#xff0c;每个网络能容…

【算法提升—力扣每日一刷】五日总结【11/30-12/04】

2023/11/30 力扣每日一刷&#xff1a;1.两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元…