atitit.判断时间重叠方法总结 java c++ c#.net js php 1. 判断时间重叠具体流程思路 1 2. 重叠算法 实际上就是日期集合跟个时间集合的的交集(乘法算法) 1 3. 代码--- 1 4. 最终生成的sql 3 5. 参考 5 1. 判断时间重叠具体流程思路 先判断日期重叠,在判断时
atitit.判断时间重叠方法总结 java c++ c#.net js php
1. 判断时间重叠具体流程思路 1
2. 重叠算法 实际上就是日期集合跟个时间集合的的交集(乘法算法) 1
3. 代码--- 1
4. 最终生成的sql 3
5. 参考 5
1. 判断时间重叠具体流程思路
先判断日期重叠,在判断时间区段重叠。
每个区段都有内包含,外包含,左包含,右包括...所以,or表达式需要4*4=16个..每个or 表达式包括4个and表达式( 两个日期表达式,两个时间范围表达式)
最终的最终的的表达式需要16*4=64个,,比较长的了..
2. 重叠算法 实际上就是日期集合跟个时间集合的的交集(乘法算法)
在程序设计里有。。。。。
回答
那实际上就是交、并、差。
所谓加,实际上就是求两个集合的并集
减,就是求两个集合的差集
乘,就是求两个集合的并集
它们都是从逻辑的运算推出来的
另外更正一下:乘是求两个集合的交集。
3. 代码---
private void ini() { String db_start_fld = "start_time"; String db_end_fld = "end_time"; String db_include_exp = "db_start_fld>=ui_start and db_end_fld<=ui_end "; String db_outclude_exp = "db_start_fld<=ui_start and db_end_fld>=ui_end "; String db_leftinclude_exp = "db_end_fld>=ui_start and db_end_fld <=ui_end "; String db_ritinclude_exp = "db_start_fld>=ui_start and db_end_fld<=ui_end "; List<String> dateExpList = new ArrayList<String>() { { add(expandFunc(db_include_exp)); add(expandFunc(db_outclude_exp)); add(expandFunc(db_leftinclude_exp)); add(expandFunc(db_ritinclude_exp)); } private String expandFunc(String db_include_exp) { String db_start_fld_Datefunc = " CONVERT(varchar(100), db_start_fld, 23)"; String db_end_fld_Datefunc = " CONVERT(varchar(100), db_end_fld, 23)"; return db_include_exp.replaceAll("db_start_fld", db_start_fld_Datefunc).replaceAll("db_end_fld", db_end_fld_Datefunc); } }; List<String> timeExpList = new ArrayList<String>() { { add(expandFunc(db_include_exp)); add(expandFunc(db_outclude_exp)); add(expandFunc(db_leftinclude_exp)); add(expandFunc(db_ritinclude_exp)); } private String expandFunc(String db_include_exp) { String db_start_fld_Timefunc = " CONVERT(varchar(100), db_start_fld, 8)"; String db_end_fld_Timefunc = " CONVERT(varchar(100), db_end_fld, 8)"; return db_include_exp.replaceAll("db_start_fld", db_start_fld_Timefunc).replaceAll("db_end_fld", db_end_fld_Timefunc); } }; List<String> finalList= new ArrayList<String>() {{ for (String dateExp : dateExpList) { for (String timeExp : timeExpList) { this.add(dateExp+" and "+timeExp.replaceAll("db_start_fld", db_start_fld).replaceAll("db_end_fld", db_end_fld)); } } }}; String sql=new ArrayList(){ private String exec( ) { String exp_final=" 1=1 "; for (String exp : finalList) { //if(exp_final.length()==0) exp_final=exp_final + " or ( "+exp +" ) "; } return exp_final; }}.exec( ); System.out.println(sql); }
4. 最终生成的sql
SELECT * FROM tab WHERE 1=1 OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), start_time, 8)<=ui_start AND CONVERT(varchar(100), end_time, 8)>=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), end_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8) <=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)<=ui_start AND CONVERT(varchar(100), db_end_fld, 23)>=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)<=ui_start AND CONVERT(varchar(100), db_end_fld, 23)>=ui_end AND CONVERT(varchar(100), start_time, 8)<=ui_start AND CONVERT(varchar(100), end_time, 8)>=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)<=ui_start AND CONVERT(varchar(100), db_end_fld, 23)>=ui_end AND CONVERT(varchar(100), end_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8) <=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)<=ui_start AND CONVERT(varchar(100), db_end_fld, 23)>=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_end_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23) <=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_end_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23) <=ui_end AND CONVERT(varchar(100), start_time, 8)<=ui_start AND CONVERT(varchar(100), end_time, 8)>=ui_end) OR (CONVERT(varchar(100), db_end_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23) <=ui_end AND CONVERT(varchar(100), end_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8) <=ui_end) OR (CONVERT(varchar(100), db_end_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23) <=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), start_time, 8)<=ui_start AND CONVERT(varchar(100), end_time, 8)>=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), end_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8) <=ui_end) OR (CONVERT(varchar(100), db_start_fld, 23)>=ui_start AND CONVERT(varchar(100), db_end_fld, 23)<=ui_end AND CONVERT(varchar(100), start_time, 8)>=ui_start AND CONVERT(varchar(100), end_time, 8)<=ui_end)

PHP邮件检测:判断邮件是否已发送成功。在开发Web应用程序时,经常需要发送电子邮件来与用户进行沟通,无论是注册确认、密码重置还是发送通知,邮件功能都是不可或缺的一部分。但是,有时候我们无法确保邮件是否真正发送成功,因此我们需要进行邮件检测以及判断邮件是否已成功发送。本文将介绍如何使用PHP来实现这个功能。一、使用SMTP服务器发送邮件首先,我们需要使用SM

使用java的File.isDirectory()函数判断文件是否存在且为目录类型在Java编程中,经常会遇到需要判断一个文件是否存在且为目录类型的情况。Java提供了File类来操作文件和目录,其中的isDirectory()函数可以帮助我们判断一个文件是否是目录类型。File.isDirectory()函数是File类中的一个方法,其作用是判断当前Fil

使用Java的Character.isDigit()函数判断字符是否为数字字符在计算机内部以ASCII码的形式表示,每个字符都有一个对应的ASCII码。其中,数字字符0到9分别对应的ASCII码值为48到57。要判断一个字符是否为数字,可以使用Java中的Character类提供的isDigit()方法进行判断。isDigit()方法是Character类的

如何使用Double类的isInfinite()方法判断一个数是否为无穷大在Java中,Double类是用来表示浮点数的包装类。该类提供了一系列方法,可以方便地对浮点数进行操作。其中,isInfinite()方法就是用来判断一个浮点数是否为无穷大的方法。无穷大是指大到超出了浮点数所能表示的范围的正无穷和负无穷。在计算机中,浮点数的最大值可以通过Double类

jQuery是一个广泛应用于Web开发中的JavaScript库,它提供了许多简洁方便的方法来操作网页元素和处理事件。在实际开发中,经常会遇到需要判断变量是否为空的情况。本文将介绍使用jQuery判断变量是否为空的几种常用方法,并附上具体的代码示例。方法一:使用if语句判断varstr="";if(str){co

题目:Go语言中如何判断日期是否为前一天?在日常开发中,经常会遇到需要判断日期是否为前一天的情况。在Go语言中,我们可以通过时间计算来实现这个功能。下面将结合具体的代码示例来演示如何在Go语言中判断日期是否为前一天。首先,我们需要导入Go语言中的时间包,代码如下:import("time")接着,我们定义一个函数IsYest

如何判断jQuery元素是否具有特定属性?在使用jQuery操作DOM元素时,经常会遇到需要判断元素是否具有某个特定属性的情况。这种情况下,我们可以借助jQuery提供的方法来轻松实现这一功能。下面将介绍两种常用的方法来判断一个jQuery元素是否具有特定属性,并附上具体的代码示例。方法一:使用attr()方法和typeof操作符//判断元素是否具有特定属

PHP是一种广泛应用于网站开发的脚本语言,对于开发者们来说,常常需要判断字段是否为空。在PHP中,判断字段是否为空可以通过一些简单的方法来实现。本文将介绍在PHP中如何判断字段是否为空,并提供具体的代码示例供大家参考。在PHP中,通常可以使用empty()函数或者isset()函数来判断字段是否为空。接下来我们分别介绍这两个函数的用法。使用empty()函数


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Linux new version
SublimeText3 Linux latest version

Notepad++7.3.1
Easy-to-use and free code editor

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6
Visual web development tools
