当前位置:首页 » 编程语言 » SQL日期大小

SQL日期大小

发布时间: 2022-05-15 23:13:57

sql如何判断两个日期的大小

--题目有点没看懂,给个例子,你自己参考下吧;
--SQLDATEDIFF函数时间差计算

DATEDIFF(datepart,startdate,enddate)--大于0明startdate大,反之则小SELECTDATEDIFF(s,'2015-05-2217:10:00','2015-05-2117:10:00')ASTimeDiff
--s表示按秒计算,获取TimeDiff值,大于0说明startdate大,反之则小

Ⅱ sql语句中怎样比较两个日期的大小

个人感觉用不等号比较日期非常不可取,应该用datediff函数,关于该函数的具体使用说明见sql server帮助。这个函数可以在sql语句中使用——如果直接用不等号就能比较日期,sql语法中干吗还要定义这个函数呢?所以,使用datediff是比较日期的最科学的方法。

以下是我从sql server帮助中摘录的部分,你也可以直接查看sql server帮助。

DATEDIFF
返回跨两个指定日期的日期和时间边界数。

语法
DATEDIFF ( datepart , startdate , enddate )

参数
datepart

是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

日期部分 缩写
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

startdate

是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。

enddate

是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

返回类型
integer

注释
startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。

当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。

示例
此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。

USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO

Ⅲ sql数据库日期比大小怎么实现

sql数据库日期比大小怎么实现
1、判断其是否在某个日期区间:
Where CheckDate Between '2013-01-01' And '2013-01-31'
这个方法也可用于加几天是多少,或减几天是多少:
把起迄日期参数化,原CheckDate要加的,那就变成@BeginDate加,减也同理~

2、判断其是否大于某天:
Where CheckDate >'2013-01-01' 或大于等于:Where CheckDate >='2013-01-01'
小于某天
Where CheckDate <'2013-01-01' 或小于等于:Where CheckDate <='2013-01-01'

3、判断其是否等于某天:
如果Check字段不带时间,只是年月日,那直接等于就可以了;
Where CheckDate ='2013-01-01'

Ⅳ sql中的文本类型日期如何比较大小

不知你比较,是想取出两者谁大谁小,还是取得两者之间的时间差
不管怎样,可以先把文本型转换成日期型:
CONVERT(DATETIME,'200909'+'01',112)
你这个文本类型没有天,转换时会有问题,所以默认给加了个天,112是日期格式,有多种,想了解,具体可以查一下有哪些格式
CONVERT(DATETIME,'20080504',112)
转换好两个日期,就可以比较了,比如用日期函数来比较两者相差天数:
SELECT
DATEDIFF(DAY,CONVERT(DATETIME,'20080504',112),CONVERT(DATETIME,'200909'+'01',112))
这样就比较出两者间相差天数了,日期函数DATEDIFF()用法自己可以去查找资料熟悉一下,有好多函数

Ⅳ sql日期比较大小

要用SQL来比较日期大小可使用 DATEDIFF 函数 [日期和时间],该函数的功能:返回两个日期之间的间隔。
语法: DATEDIFF ( date-part, date-expression-1, date-expression-2 )
date-part : year | quarter | month | week | day | hour | minute | second | millisecond
参数 date-part 指定要测量其间隔的日期部分。
有关日期部分的详细信息,请参见日期部分。
date-expression-1 某一间隔的起始日期。从 date-expression-2 中减去该值,返回两个参数之间 date-parts 的天数。
date-expression-2 某一间隔的结束日期。从该值中减去 Date-expression-1,返回两个参数之间 date-parts 的天数。
用法 此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2 - date1)的有符号的整数值。
当结果不是日期部分的偶数倍时,DATEDIFF 将被截断而不是被舍入。
当使用 day 作为日期部分时,DATEDIFF 返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。
当使用 month 作为日期部分时,DATEDIFF 返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。
当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。
对于更小的时间单位存在溢出值:
milliseconds 24 天
seconds 68 年
minutes 4083 年
others 没有溢出限制
如果超出这些限制,此函数将返回溢出错误。
标准和兼容性 SQL/92 Transact-SQL 扩展。
SQL/99 Transact-SQL 扩展。
Sybase 与 Adaptive Server Enterprise 兼容。
下面示例的语句返回 1: SELECT datediff( hour, '4:00AM', '5:50AM' )
下面的语句返回 102: SELECT datediff( month, '1987/05/02', '1995/11/15' )
下面的语句返回 0: SELECT datediff( day, '00:00', '23:59' )
下面的语句返回 4: SELECT datediff( day,'1999/07/19 00:00','1999/07/23 23:59' )
下面的语句返回 0: SELECT datediff( month, '1999/07/19', '1999/07/23' )
下面的语句返回 1: SELECT datediff( month, '1999/07/19', '1999/08/23' )

Ⅵ 使用SQL语句比较两个日期列的大小

日期就是一个实数,整数部分就是今天距1900-01-01那天的天数。小数部分表部时间
小时数=24*小数部分。 select
cast('1900-01-01
00:00:00.000'
as
datetime)
+
1.1
结果为1900-01-02
02:24:00.000 所以,直接比较大小就行了(where 日期字段1
>
日期字段1)。

Ⅶ SQL语句 怎样比较两个日期的大小,简单一点的

我刚刚写了一段代码你参考一下 希望对你有帮助

import java.text.SimpleDateFormat;
import java.util.Date;

public class Date_Test {

public static void main(String[] args) {
Date d1 = new Date(); //第一个时间
Date d2 = new Date(); //第二个时间
SimpleDateFormat f = new SimpleDateFormat("hhmmss"); //格式化为 hhmmss
int d1Number = Integer.parseInt(f.format(d1).toString()); //将第一个时间格式化后转为int
int d2Number = Integer.parseInt(f.format(d2).toString()); //将第二个时间格式化后转为int
if(d1Number>d2Number){
System.out.println("时间d1大");
System.out.println(d1Number);
}
else{
System.out.println("时间d2大");
System.out.println(d2Number);
}
}

}

Ⅷ SQL语句 怎样比较两个日期的大小

惯例,在等号左边尽量不要有对字段的运算,所以一般用法有:

1、判断其是否在某个日期区间:
Where CheckDate Between '2013-01-01' And '2013-01-31'
这个方法也可用于加几天是多少,或减几天是多少:
把起迄日期参数化,原CheckDate要加的,那就变成@BeginDate加,减也同理~

2、判断其是否大于某天:
Where CheckDate >'2013-01-01' 或大于等于:Where CheckDate >='2013-01-01'
小于某天
Where CheckDate <'2013-01-01' 或小于等于:Where CheckDate <='2013-01-01'

3、判断其是否等于某天:
如果Check字段不带时间,只是年月日,那直接等于就可以了;
Where CheckDate ='2013-01-01'

如果CheckDate字段是携带时间的就会有差别;这一点,在上述所有方法中都需要注意
eg:CheckDate 实际存储值可能是: 20130101 08:50:54:000 或 20130101 22:50:54:000
这时直接用上面的等号是抓不到的,因此或改写成:
Where CheckDate >= '2013-01-01' And CheckDate < '2013-01-02'
当然也可以把'2013-01-01',定义为参数@Date DateTime
Where CheckDate >= @Date And CheckDate < @Date+1

不建议在等号左边使用函数或计算对表字段进行计算。

以上是两个日期的判断,另外有些日期处理函数可以了解一下:

DATEDIFF ( datepart , startdate , enddate )
返回指定的 startdate 和 enddate 之间所跨的指定 datepart 边界的计数(带符号的整数)。
eg:
Select DateDiff(DAY,'20130101','20130105')
1号到5号相差4天,输出结果为4

常用的datepart 有:
datepart 缩写
year yy, yyyy 年
month mm, m 月
day dd, d 日
week wk, ww 周
hour hh 时
minute mi, n 分
second ss, s 秒

DATEADD(datepart, number, date)

将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。
eg:
Select DATEADD(DAY,1,'20130101')
1号加1天就是2号;输出结果为 ‘2013-01-02’
Number可以是负数就变成减几天

DATEADD(datepart, number, date)

将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。
eg:
Select DATEPART(DAY,'20130101')
返回datepart描述的部分,输出结果为 1

Ⅸ SQL语句 怎样比较两个日期的大小,简单

我刚刚写了一段代码你参考一下 希望对你有帮助

import java.text.SimpleDateFormat;
import java.util.Date;

public class Date_Test {

public static void main(String[] args) {
Date d1 = new Date(); //第一个时间
Date d2 = new Date(); //第二个时间
SimpleDateFormat f = new SimpleDateFormat("hhmmss"); //格式化为 hhmmss
int d1Number = Integer.parseInt(f.format(d1).toString()); //将第一个时间格式化后转为int
int d2Number = Integer.parseInt(f.format(d2).toString()); //将第二个时间格式化后转为int
if(d1Number>d2Number){
System.out.println("时间d1大");
System.out.println(d1Number);
}
else{
System.out.println("时间d2大");
System.out.println(d2Number);
}
}

}

Ⅹ sql server中字符串类型的日期如何比较大小

第二种方法则可以利用sql提供的日期转换函数了。 CONVERT (<data_ type[ length ], <expression [, style]) 1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。 2)length用于指定数据的长度,缺省值为30。 3)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。 上图中GETDATE()函数是以DATETIME 的缺省格式返回系统当前的日期和时间 。 如果用这种方法来判断某一个字段的话,则存入的日期字段的字符串格式只要是能让sql server完成对日期的转换就可以了,而不一定要像第一种方法中的那样严格。 还是说adddate字段,比如要比较它是否大于当前的日期,就可以这样写: 个人认为第二种方法更加保险一些。

热点内容
存储设备报价 发布:2024-05-08 02:22:01 浏览:553
定步长的算法 发布:2024-05-08 02:16:18 浏览:109
怎么使用pe口袋服务器 发布:2024-05-08 02:02:18 浏览:471
xml数据库c 发布:2024-05-08 02:01:46 浏览:456
仿知乎android 发布:2024-05-08 01:56:00 浏览:904
mysql编译参数 发布:2024-05-08 01:53:46 浏览:194
怎么看台式电脑配置生产日期 发布:2024-05-08 01:32:26 浏览:460
java基础培训学校 发布:2024-05-08 01:30:44 浏览:468
简单辅助火眼打码如何配置 发布:2024-05-08 01:30:44 浏览:903
我的世界网易版服务器游戏 发布:2024-05-08 01:10:33 浏览:42