❶ sql 语句中如何比较当前时间与指定时间是否相同
代码的思路:
两个时间的相差的秒数,当等于0时,说明两日期相同。
getdate()表示获取当前系统时间
sql 语句中比较当前时间与指定时间是否相同参考代码如下:
select datediff(second,'2012-12-15 16:54:00',getdate())
(1)sql判断两个时间扩展阅读:
GETDATE() 函数从 SQL Server 返回当前的时间和日期。
语法:GETDATE()
实例如下
使用下面的 SELECT 语句:
SELECT GETDATE() AS CurrentDateTime
结果:
CurrentDateTime
2008-12-29 16:25:46.635
注释:上面的时间部分精确到毫秒。
❷ SQL语句中怎样比较两个日期的大小
惯例,在等号左边尽量不要有对字段的运算,所以一般用法有:x0dx0ax0dx0a1、判断其是否在某个日期区间:x0dx0aWhere CheckDate Between -01-01And -01-31'x0dx0a这个方法也可用于加几天是多少,或减几天是多少: x0dx0a把起迄日期参数化,原CheckDate要加的,那就变成@BeginDate加,减也同理~x0dx0ax0dx0a2、判断其是否大于某天:x0dx0aWhere CheckDate >-01-01或大于等于:Where CheckDate >=-01-01'x0dx0a小于某天x0dx0aWhere CheckDate <-01-01或小于等于:Where CheckDate <=-01-01'x0dx0ax0dx0a3、判断其是否等于某天:x0dx0a如果Check字段不带时间,只是年月日,那直接等于就可以了;x0dx0aWhere CheckDate =-01-01'x0dx0ax0dx0a如果CheckDate字段是携带时间的就会有差别;这一点,在上述所有方法中都需要注意x0dx0aeg:CheckDate 实际存储值可能是: 20130101 08:50:54:000 或 20130101 22:50:54:000x0dx0a这时直接用上面的等号是抓不到的,因此或改写成:x0dx0aWhere CheckDate >= -01-01And CheckDate < -01-02'x0dx0a当然也可以把-01-01',定义为参数@Date DateTimex0dx0aWhere CheckDate >= @Date And CheckDate < @Date+1x0dx0ax0dx0a不建议在等号左边使用函数或计算对表字段进行计算。x0dx0ax0dx0a以上是两个日期的判断,另外有些日期处理函数可以了解一下:x0dx0ax0dx0aDATEDIFF ( datepart , startdate , enddate )x0dx0a返回指定的 startdate 和 enddate 之间所跨的指定 datepart 边界的计数(带符号的整数)。x0dx0aeg:x0dx0aSelect DateDiff(DAY,',') x0dx0a1号到5号相差4天,输出结果为4x0dx0ax0dx0a常用的datepart 有: x0dx0adatepart 缩写 x0dx0ayear yy, yyyy 年x0dx0amonth mm, m 月 x0dx0aday dd, d 日x0dx0aweek wk, ww 周x0dx0ahour hh 时x0dx0aminute mi, n 分x0dx0asecond ss, s 秒 x0dx0ax0dx0aDATEADD(datepart, number, date)x0dx0ax0dx0a将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。x0dx0aeg:x0dx0aSelect DATEADD(DAY,1,') x0dx0a 1号加1天就是2号;输出结果为 ‘2013-01-02’x0dx0aNumber可以是负数就变成减几天x0dx0ax0dx0aDATEADD(datepart, number, date)x0dx0ax0dx0a将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。x0dx0aeg:x0dx0aSelect DATEPART(DAY,')x0dx0a返回datepart描述的部分,输出结果为 1
❸ SQL 判断两个时间段是否有交叉
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_GetTimeSlotDays]'))
DROP FUNCTION [dbo].fun_GetTimeSlotDays
GO
-- =============================================
-- Author: <Mike.Jiang>
-- Create date: <2012-07-18>
-- Description: <判断两个时间断是否有交叉,如果有则返回1,否则返回0>
-- =============================================
CREATE FUNCTION dbo.fun_GetTimeSlotDays(
@fromDate DATETIME,
@toDate DATETIME,
@startDate DATETIME,
@endDate DATETIME
)
RETURNS INT
AS
BEGIN
DECLARE @ret INT;
IF(DATEDIFF(DAY,@fromDate,@endDate)>=0 AND DATEDIFF(DAY,@endDate,@toDate)>=0 )
SET @ret=1;
IF(DATEDIFF(DAY,@startDate,@toDate)>=0 AND DATEDIFF(DAY,@toDate,@endDate)>=0 )
SET @ret=1;
IF (@ret is null)
SET @ret=0;
RETURN @ret;
END
GO
❹ sql语句判断两个时间段是否有交集
select * from 表 where a1<=b2 and a2>=b1
同一类最小的小于另一类最大的 ,同一类最大的大于另一类最小的,然后用and 连接取两者都满足的。
这是用同一类时间,查询另一类时间它是否包含同一类时间
❺ SQL语句如何判断一个日期在两个日期之间
1、创建测试表,
create table test_date_bet(id varchar2(20),v_date date);
❻ SQL里怎么判断两个日期是不是在同一个月内
select DATEDIFF (DAY ,日期1,日期2 ), * from 查询表 where DATEDIFF (DAY ,日期1,日期2 ) <=30
也可以:
select DATEDIFF (month,日期1,日期2 ), * from 查询表 where DATEDIFF (month,日期1,日期2 ) <1
注释:
1、DATEDIFF (DAY ,日期1,日期2 ) 是取得两个日期直接的天数;DATEDIFF (DAY ,日期1,日期2 )<=30 一个月以30天计算的。
2、DATEDIFF (month,日期1,日期2 ) 是取得两个日期直接的天数;DATEDIFF (month,日期1,日期2 )<1
❼ sql 判断两个时间段是否有交集
可以逆向思考,简单些。判断两个时间段是否有交集,例如有2个时间段,A1--A2,B1--B2,只有在2种情况下没有交集,如下:(2个时间段都有效的情况,即A1<=A2,B1<=B2)
A2<B1, -----------A1========A2-------B1========B2---------------------->
或
B2<A1 -----------B1========B2-------A1========A2---------------------->
❽ 用SQL语句判断两个时间 差>24小时
mssql的datadiff对时间的计算很不严谨啊,
select DATEDIFF(hour, '20110101 00:22:00' , '20110102 00:00:00' ) 你看看,这样也是24小时,
但其实是23小时多差22分钟,也就是说,这个计算的过程是忽略分和秒的影响的,看你的程序的要求了,如果只看小时,就可以,如果要考虑分钟或秒 ,直接是不行的
精确的比较要分两个部分,就是年月日一个部分,时间一个部分
年月日 分别看 年是否相同,月是否相同,这两个如果不同则肯定>24小时,在看日是否相同,如果日相同肯定<=24小时,如果日不同 ,select DATEDIFF(dd, '20110101 00:22:00' , '20110102 00:00:00' ) 是否>=2,如果满足也肯定>24小时,如果=1 就比较麻烦,还要在判断 时分秒 ,
因为 select DATEDIFF(hh, '2011/01/01 00:22:00' , '2011/01/02 00:55:00' ) =24
select DATEDIFF(hh, '2011/01/01 00:22:00' , '2011/01/02 00:00:00' ) =24
❾ sql怎么判断两个具体时间的时间长度是否大于1年
PRINT
DATEDIFF(d,'2013-11-1','2014-10-13')
,返回两个日期的天数差.
这个差和
365对比.大于等,则表示超过1年,否则就是一年内
❿ 如何在SQL中比较两个时间相等
首先这俩字段是时间类的字段,或者至少你得保证按时间格式存储的文本
datediff(day,datetime1,datetime2) =0
精确到day是不是一样的
datediff(hh,datetime1,datetime2) =0
精确到小时是不是一样的
。。。