❶ 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
精確到小時是不是一樣的
。。。