當前位置:首頁 » 編程語言 » datetimesql比較時間大小
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

datetimesql比較時間大小

發布時間: 2022-04-15 23:31:56

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中如何比較兩個表的時間欄位的大小

可以直接
a.a>b.b的啊
你怎麼寫的,,,

如果直接不行,,,
可以試下
cast(a.a as datetime)>cast(b.b as datetime)
再試下,,,不過正常來說直接第一種酒可以的

⑶ SQLServer datetime 類型數據比較大小。

elect [z1] ,[z2] ,[z3] ,[z4] from [ADO] where [z1] >= '2015/2/10 11:18:06' AND [z1] <= '2015/2/10 12:09:31'

⑷ sql server 2005中如何比較datetime類型時間的大小,說詳細一點,謝謝了 啊啊啊啊

很簡單啊 和整型的差不多 直接比就可以了 比如你找大於2012-12-01的數據
你就寫 日期欄位>'2012-12-01' sql默認 這樣寫就是0時0分0秒 所以不用寫時分秒的
比如你查詢2012-12-01這一天的數據 寫法:日期欄位>='2012-12-01' and 日期欄位<'2012-12-02'
希望解決了樓主的問題 有什麼不明白的隨時問我

⑸ 使用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)。

⑹ 如何比較兩個datetime類型數字的大小

如果在資料庫(sql)中將保存日期的欄位的數據類型設置為varchar,而你又需要對這個日期和另外一個日期進行比較,那麼該怎麼辦呢?
第一種方法:

很容易想到,就是純粹地利用字元串來比較大小,比如有一個欄位為vote_time,其數據類型為varchar,要比較這個日期是不是大於某個日期,比如"2006-02-23",那麼可以直接寫:
where vote_time>'2006-02-23',這中方法很直觀,當然也需要在格式上有所規范,比如,如果日期是2006年3月3日,就必須將日期保存為2006-03-03,否則比較的時候容易出錯。

第二種方法:使用類型轉換函數convert()

1、首先說明不需要類型轉換,並可以正確比較的情況

如果只是比較varchar類型的時間值與日期類型的值比較

select * from voter where vote_time>getdate()會自動轉換varchar為datetime類型(2009-2-27轉換為2009-02-27),並進行比較,所以2009-1-15並為出現在結果集中

第一種情況下,之所以沒有正確是因為系統認定'2006-02-23'為字元串,所以進行的比較是按照比較兩個字元串的大小進行的,依次按位比較

2、如果是varchar類型的時間值,按照時間先後排序,則需要轉換varchar為datetime後再排序

轉換前

轉換格式前排序時,時間2007-02-28 06:30:000實際比2007-2-27 06:30:000遲,但是卻排在了前面。轉換後

結果已經是按照實際時間的先後順序從早到晚排序了

註:插入的varchar時間值必需是合法的(如2009-2-30就是不合法的日期,2月沒有30號)否則,轉換時會有錯誤:從 char 數據類型到 datetime 數據類型的轉換導致 datetime 值越界。輸入日期的時候,可以選擇使用日期控制項,這樣就不會輸入不存在的日期了

本文來自CSDN博客,轉載請標明出處: http://blog.csdn.net/tanglinfeng/archive/2009/02/19/3908363.aspx

⑺ sqlserver如何比較兩個日期(datetime)的年月大小,比較到年月,不比較日

select * from xxxx where datediff(m,dt1,dt2)
datediff:日期比較函數,SQL server自帶的,會將比較的兩個日期比較部分的差值返回,m表示比較月

⑻ 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