SQL用DataDiff查询的怪现象而引发的思考。。

TSMC40nmLP版图实战:从Design Rule解读到Cadence高效布局布线 本文详细解析了TSMC40nmLP工艺的版图设计实战,从Design Rule解读到Cadence高效布局布线技巧。重点介绍了40nm工艺中的关键设计规则,如最小线宽、间距规则和深N阱规则,并分享了Cadence Virtuoso中的高效工作流和射频模块设计技巧,帮助工程师提升版图设计效率和质量。 阅读详情

今天又看到新加坡的同事发过来的一段SQL语句,还是老问题,时间对比直接用大于小于号。叹了声气后,手动给改成datediff了,可是一运行出错,错误提示如下:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting datetime from character string.

 

为了说明方便,这里就简化一个例子好了。

 

create table a

(

   id int not null,

   val   varchar(20)

)

 

insert into a values (1, '2009-05-02')

insert into a values (2, 'abc')

insert into a values (3, '2009-12-10')

 

我的语句是这样的:

 

select * from a where id in (1,3) and datediff(day, convert(datetime,val),getdate()) < 0

 

按常理,我先找到id= 1或3的记录,然后再跟今天比较,应该会返回id=1的记录啊。可是居然出现如下错误:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting datetime from character string.

 

可是当我执行:

 

select datediff(day, convert(datetime,val),getdate()) from a where id in (1,3)

这时候又是能够执行的。 这就是说在进行1或3的判断前,已经对id=2这条记录执行了convert,所以出错了。

 

 

由此可见,语句并不是我们想象的由上到下执行的,难道是由下向上执行的?换成如下语句:

select * from a where datediff(day, val,getdate()) < 0 and id in (1,3)

 

错误依旧。

 

晕了,不是由上到下,也不是由下到上,难道这个顺序不是固定的? 仔细分析一下,上面一个可以执行的语句可以发现,

由于convert函数是在所查询出来的结果集上再进行的转换,而且id = 1或3的记录中的val列都是可以转换为时间类型的,所以

没有任何错误。 其他两个运行有错误的语句中,在执行的时候都是在表中所有记录的基础上,先调用convert这个条件的,所以

当遇到id=2这条记录时,就会出错。既然SQL server不是按照我们想要的顺序去执行,那么我们能不能强制让它去按我们的所要求的

顺序去执行呢?

于是乎,好用的case when 就派上用场了。我把上面的语句改为如下:

select * from a where (case when id in (1,3) then datediff(day, convert(datetime,val),getdate()) else 1 end) < 0

 

如上面所示,在where 条件中,首先判断 当 id in (1,3) ,则进行datediff和convert函数的掉用,此时只有id = 1或3的记录才会调用convert函数,所以此时肯定不会出错,其他的直接返回一个可以忽略改条件的值即可。

运行后,没有错误,并且只返回ID=1的记录。

 

 

 

SFT看这一篇就够了!万字长文:监督微调(Supervised Fine-Tuning, SFT)技术全解析【从理论到实战】 大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。欢迎关注,一起探索技术的无限可能! 阅读详情

相关推荐

Python脚本自动化芯片设计?PyAether实战教程带你玩转EDA

本文通过PyAether实战教程,详细介绍了如何利用Python脚本实现芯片设计自动化。内容涵盖环境搭建、核心对象模型解析,并重点演示了原理图自动生成、参数化单元创建及设计验证流程集成,帮助EDA工程师从重复性手动操作中解放,显著提升设计效率与一致性。

e4f5g6h的博客 1312

mysql中DATADIFF()函数使用

[html] view plain copy 用过mssql的朋友应该了解datediff函数了,在mssql中,该函数的第一个参数是开始日期,第二个是结束日期,开始日期应该在结束日期之前,这样算出来的结果是大于或等于0的一个数,反之是一个负数,但在MySQL中就完全相反,

AinUser的博客 7473

OpenCV透视变换实战:5分钟搞定歪斜证件照矫正(附完整代码)

本文详细介绍了如何使用OpenCV的透视变换技术快速矫正歪斜证件照,包含完整的Python代码实现。通过特征检测、坐标计算和矩阵变换三个核心步骤,5分钟内即可将手机拍摄的歪斜图像自动矫正为专业级证件照,大幅提升图像处理效率。

weixin_29094979的博客 481

datadiff不能计算相差秒数的问题

此处“startdate”表示小的时间,“enddate”表示大的时间 正常datadiff函数是这样的: DATEDIFF(datepart,startdate,enddate) datepart填写如下参数: 填写d表示计算相差的天数,填写s表示计算相差的秒数,但是有的系统不是这么用的。 datadiff(enddate,startdate) 表示相差的天数,只能计算相差的天数,如果想计算秒,则可以转换为时间戳解决。 UNIX_TIMESTAMP(enddate)-UNIX_TIMESTAMP(star

challenge_self的博客 1588

Windows环境下Elasticsearch与JDK版本兼容性实战指南

本文详细解析了Windows环境下Elasticsearch与JDK版本的兼容性问题,提供了从版本匹配检查到安装部署的完整实战指南。重点介绍了Elasticsearch 8.x需JDK 17+等关键版本对应关系,并分享多版本JDK共存方案及性能优化技巧,帮助开发者高效避坑。

weixin_29250403的博客 420

CANFD升级踩坑实录:DBC转换时DLC大于8的信号怎么处理?

本文详细探讨了CANFD升级过程中DLC大于8的信号处理问题,提供了工程化解决方案和AutoSar BSW层配置要点。通过分析CAN与CANFD的DLC本质差异,提出信号拆分重组、DLC重映射和协议层适配三种策略,并给出验证与测试方案,帮助开发者避免数据截断和通信故障。

weixin_42521843的博客 228

【亲测免费】 探索数据差异的艺术:DataDiff - 精准比较与洞察的强大工具

在数据分析和开发工作中,数据比对是一个必不可少的环节。我们经常需要确认两个数据集是否一致,或者找出它们之间的细微差别。这就是 DataDiff 进场的地方。这是一个开源项目,旨在提供高效、灵活且直观的数据比较解决方案。 ## 项目简介 DataDiff 是由 DataFold 团队开发的一个 Python 库,专门用于对比大型数据集。它支持多种数据结构(如 Pandas DataFrame 和...

gitblog_00084的博客 1077

Windows 下 Codex MCP 服务配置全攻略:从环境搭建到实战避坑

本文详细介绍了在Windows系统下配置Codex MCP服务的完整流程与实战避坑指南。内容涵盖从Node.js环境搭建、Codex CLI安装,到核心配置文件config.toml的编写与解析,并重点解决了Windows平台特有的环境变量设置、MCP服务启动命令适配等关键难点,帮助开发者顺利完成从环境准备到编辑器插件连接的整个配置过程。

weixin_28826545的博客 2067

data-diff,一个超强的 Python 库!

data-diff库为Python提供了强大的数据比较功能,能够详细地比较和分析各种数据结构之间的差异。它支持多种数据类型,包括字典、列表、集合等,能够高效地处理大量数据。通过生成清晰的差异报告,data-diff帮助用户快速识别数据变化,便于进行数据审计、配置管理和软件测试等任务。此外,它的高级功能还允许自定义比较逻辑和结果展示,增加了使用的灵活性。简单易用且功能强大的特点,使得data-diff成为处理数据差异分析的优选工具,适合于数据科学家、软件开发者和系统管理员等专业人员使用。

m0_67847535的博客 2180

分布式锁特点、以及用python3实现redis分布式锁

以下是 Python3 实现 Redis 分布式锁的详细教程,包含代码示例、原理说明及最佳实践。

数据知道的博客 2万+

SAP 批次管理

批次管理: 业务场景: 批次常用于:采购、生产、SD等: 1、先进先出,先入库的先出库(如何实现),基于入库时间来自动确定出库策略。 2、追塑:基于批次进行产品质量追溯 例如订单MTO ---> PP ----> MM(批次关联)。SO—>PP工单 --> 预留 --> 发料(基于批次A\B\C)-->产成品入库-->批次入库D--> ...

willieyuan的博客 1万+

SQL DATEDIFF函数

SQL DATEDIF函数计算并返回两个日期值之间的差值。返回的值是一个整数。您可以通过DATEDIFF改变datepart参数来计算各种日历计算。

寒冰屋的专栏 3万+

骑砍2霸主MOD开发(9)-游戏大地图(MapScene)

Settlement类型由town,castle,castle_village,village,hideout五种类型组成,通过对GameEntity中添加tag实现类型的加载.大地图中军团(MobileParty)的移动速度,AI寻路,食物消耗等均和当前MobileParty所处地形有关,地形统一被定义为TerrainType,类型有森林,荒漠等.MapScene.Read("Main_map", ref sceneInitializationData, "") 装载Main_map大地图。

骑砍战团&霸主MOD开发 1621

SQL用DataDiff查询的怪现象而引发的思考(2)

在脑子里老是记得当初写SQL的时候,总是有人提醒对于主键的条件要写在前面,至于为什么现在总是记不清楚了。但是SQL中where 条件的执行顺序跟主键以及索引有很大的关系。把上片中的表a 加上主键:alter table add constraint pk_a_id primary key (id) 然后在运行上篇中出错的例句:select * from a where id

kucool的专栏 833

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【免费下载】 数据对比利器:data-diff——跨数据库快速比对您的数据

在当今数据驱动的时代,确保数据的准确性和一致性变得至关重要。**data-diff** 正是为了解决这一痛点应运而生的开源项目,尽管Datafold已决定自2024年5月17日起不再积极支持或开发此开源版本,但它的遗产仍然值得我们深入挖掘和利用。 ## 项目介绍 **data-diff**是一个高效的数据比较工具,它能够在SQL数据库之间或同一数据库内的不同表中迅速找出差异。无论是进行数据迁移...

gitblog_00665的博客 1389

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【亲测免费】 数据差异比对工具 DataDiff 使用指南

--- ## 项目介绍 **DataDiff** 是一个高效的数据差异比对开源工具,由 [Datafold](https://datafold.com/) 开发并维护。该项目旨在简化数据库之间的数据比较过程,帮助开发者和数据工程师快速识别和解决数据不一致的问题。它支持多种数据库系统,提供了命令行界面和API接口,使得数据对比既直观又灵活。无论是数据库迁移、数据同步验证还是日常的数据质量检查,D...

gitblog_00482的博客 1754

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

data-diff数据库差异检测工具深度技术解析

data-diff作为一款高性能的跨数据库数据一致性校验工具,通过智能算法在大规模数据集上实现快速差异检测。其核心基于分段校验和二分查找算法,支持多种主流数据库系统,为数据迁移验证、ETL流程监控和数据质量保障提供了可靠的技术解决方案。 ## 技术深度解析 data-diff采用双引擎架构设计,分别针对不同场景优化:hashdiff算法用于跨数据库比对,joindiff算法用于同数据库高效校验

gitblog_01181的博客 968

如何快速对比数据库表差异?DataDiff 完整使用指南与实战技巧

在数据迁移、同步或质量检查过程中,你是否曾为如何快速找出两个数据库表之间的差异而头疼?DataDiff 作为一款高效的开源数据差异比对工具,能帮你轻松解决这一难题!无论是同一数据库内的表对比,还是跨不同数据库的表差异分析,DataDiff 都能提供直观且灵活的解决方案,让数据一致性校验变得简单高效。 ## ???? 什么是 DataDiff?核心功能解析 DataDiff 是由 Datafold ...

gitblog_01013的博客 502

SQL-datadiff()应用

二、语法:datediff(datepart,startdate,enddate)是后面日期减去前面的日期(enddate-startdate)1、datepart,规定应在日期的哪一部分计算差额。一、作用:返回两个日期之间的时间间隔。日期 缩写。查询近30天活跃用户数。

weixin_42060331的博客 515

上升的温度---datadiff使用

上升的温度 要求:来查找与之前(昨天的)日期相比温度更高的所有日期的 id ,返回结果不要求顺序 。 题目: 表 Weather +---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | recordDate | date | | temperature | int | +---------------+---.

qq_44371321的博客 445

SQL函数 - DATE_DIFF()

sql计算时间差

Lizzy_Fly的博客 1万+

数据差异对比利器:DataDiff - 跨数据库高效数据比对解决方案

在数据工程和ETL流程中,确保数据一致性是至关重要的任务。DataDiff 作为一款强大的开源工具,专门用于快速准确地比较不同数据库之间的数据差异,帮助开发者和数据工程师轻松发现数据不一致的问题。 ## 核心功能特性 1. **跨数据库支持**:支持多种主流数据库,包括 PostgreSQL、MySQL、Snowflake、Oracle、SQL Server 等 2. **高性能比对**:采用

gitblog_00369的博客 671

5分钟快速上手data-diff:跨数据库数据差异对比终极指南

你是否曾为数据迁移后的不一致而头疼?或者需要验证两个数据库表的数据是否完全一致?**data-diff** 正是为解决这些痛点而生的强大工具!这是一个专门用于在不同或相同的SQL数据库之间快速比较数据差异的Python库,支持PostgreSQL、MySQL、Snowflake、BigQuery等主流数据库系统。🚀 ## 为什么你需要数据差异对比工具? 在日常数据工作中,我们经常面临这样的挑

gitblog_00564的博客 143

DataDiff:高效数据差异比对工具使用指南

DataDiff 是一个高性能的数据差异比对开源工具,专门用于比较不同数据库之间的数据一致性。该项目支持多种主流数据库系统,提供了命令行界面和Python API接口,帮助开发者和数据工程师快速识别和解决数据不一致问题。 ## 快速安装与部署 要开始使用DataDiff,首先确保系统已安装Python 3.8或更高版本。以下是安装步骤: ```bash # 克隆项目到本地 git clone

gitblog_00267的博客 1109

【亲测免费】 数据差异比对工具 DataDiff 开源项目使用手册

DataDiff 是一个强大的数据比较工具,旨在帮助开发者和数据工程师高效地发现数据库或数据集之间的差异。下面是其主要的目录结构及其简介: ```markdown data-diff/ ├── README.md # 项目介绍和快速入门指南 ├── src # 核心源代码目录 │ ├── main # 主要业务逻辑代码 │ └...

gitblog_00389的博客 921

data-diff 支持的12种数据库连接配置完全手册:跨平台数据差异比较终极指南

想要在不同数据库之间高效比较数据差异吗?data-diff 是一个强大的开源数据比较工具,支持12种主流数据库的跨平台数据差异检测。无论您是数据分析师、数据工程师还是数据库管理员,这份完整手册将为您提供所有数据库连接配置的详细指南,帮助您快速搭建数据比较环境,实现精准的数据同步和验证。 ## 📊 为什么选择data-diff进行数据差异比较? data-diff 是一个基于Python开发的

gitblog_00459的博客 349
上一篇: Google 超强的实时搜索。。。
下一篇: SQL用DataDiff查询的怪现象而引发的思考(2)
kucool
博客等级 码龄21年 16粉丝 64原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值