當前位置:首頁 » 編程語言 » 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欄位,比如要比較它是否大於當前的日期,就可以這樣寫: 個人認為第二種方法更加保險一些。

熱點內容
shell腳本平方計算公式 發布:2024-04-26 23:29:26 瀏覽:186
比較實惠的雲伺服器 發布:2024-04-26 23:24:57 瀏覽:973
怎麼增加電腦緩存 發布:2024-04-26 23:23:46 瀏覽:450
android調試gdb 發布:2024-04-26 23:22:27 瀏覽:98
androidsocket服務 發布:2024-04-26 22:49:53 瀏覽:980
python編譯時加密 發布:2024-04-26 22:49:20 瀏覽:246
買車看哪些配置參數 發布:2024-04-26 22:45:50 瀏覽:835
linux顯示圖像 發布:2024-04-26 22:45:41 瀏覽:493
flash腳本格式 發布:2024-04-26 22:43:41 瀏覽:452
c語言求三位數 發布:2024-04-26 22:43:39 瀏覽:690