㈠ 在sql兩個日期型如何比較早晚
思路:
sql@kokooa>select * from test038;
A B C
-------------- -------------- --------------
18-9月 -09 09-10月-09 09-8月 -08
sql@kokooa> select f from(
2 select a,b,c,(case when d-c>0 then d else c end) as f from(
3 select a,b,c,(case when a-b>0 then a else b end) as d from test038));
F
--------------
09-10月-09
這樣就求出最大日期了也就是最遲日期
㈡ 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的CK約束怎麼判斷兩個日期時間的先後啊
SELECT
DATEDIFF("ss",'2008-02-02','2008-03-09')獲得兩個日期之間相差的
秒數,後面的減去前面的如果返回大於0,則後面的日期大,日期偏後
㈣ sql語句中日期時間類型怎麼比較
正常比較日期前後就好了,假設表名叫Table,有個欄位叫CreateDate是日期類型的,如下:
select *
from Table
where CreatedDate>=CAST(DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)AS datetime)
㈤ 用sql語句查詢兩個時間段的數據
用函數或過程可能會快點,用一句sql也行。
設計思路:根據題意,起始日期的結存數減去結束期的剩餘數就是銷售數量,其它日期的情況用不著管。
select
a.日期
as
起始日期,
b.日期
as
結束日期,
a.上期結存數量,
a.商品名稱,
a.上期結存數量-b.剩餘數量
as
銷售數量,
b.剩餘數量
from
(select
日期,上期結存數量,商品名稱
from
[tablename]
where
日期='20080901'
and
商品名稱='書包')
a,
(select
日期,剩餘數量,商品名稱
from
[tablename]
where
日期='20080904'
and
商品名稱='書包')
b
where
a.商品名稱=
b.商品名稱
㈥ SQL資料庫中如何比較兩條的日期:並查詢間隔
將兩個日期賦值給兩個變數,然後去比較,當然,也可以寫成一個語句,那會比較長。
欄位名你都沒有提供,我就下面寫,你自己改。
declare @a as datetime
declare @b as datetime
select @a = Cdate from 表名 where lid=1
select @b = Cdate from 表名 where lid=2
select abs(datediff(day,@a,@b))
取了變數,用datediff,以day天數比較,然後可能會產生負數,取個絕對值。
㈦ 如何利用SQl語句比較兩個同一個號碼時間的前後
你是想干什麼?比較大小後顯示什麼還是什麼意思?比如A比B大顯示A,B比A大顯示B,一樣大顯示空,是類似這個意思么?時間可以直接比較的。
select case when A.Date_Time>B.Date_Time then A, when A.Date_Time>B.Date_Time then B else null end date_time from A,B where A.Serial_Number=B.Serial_Number and A.Serial_Number=123456
如果僅僅是比較二者的大小,那麼比如A>B,怎麼樣,A<B則不行,那麼直接在where後比較就好了。
select * from A,B where A.Serial_Number=B.Serial_Number and A.Serial_Number=123456 and A.Date_Time>B.Date_Time
㈧ 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語句中如何進行日期比較
datediff(d,需要比較的日期,getdate()),datediff返回兩個日期之間的時間差,getdate()獲取當天系統時間
㈩ 如何比較資料庫中兩個時間的早晚
DATEDIFF("d",2011-9-24,2011-9-25)
結果得出的是比較這兩個日期相隔的天數。就可以判斷早晚了。