sql時間大小比較
1. 在sql中比較時間的大小怎麼做在線等
您好:
還以為有人會搶答。
直接大於號小於號就可以比較了。
時間越晚,比較的時候值越大。
SELECT*FROM表WHERE時間欄位>'2017-01-01'
以上是一個簡單的例子,請參考。
2. SQL語句 比較時間大小
這句是未過期的:
select * from 表 as c where endTIME>getdate()
這句是已過期的:
select * from 表 as c where endTIME<getdate()
另外,對日期型的欄位進行比較是不用轉換成字元型的,直接用 =、<、>來比較就可以了,
還有,null值不參與比較的,所以 AND c.EndTime IS NOT NULL 這段可以省略。
3. SQL 時間比較
有這么一個古老的傳說:
相傳,在遠古時期,豬頭設計者們定義日期類型的時候,一共制定了兩套:Date 和 Datetime 類型,
Date是日期的,如:2010-3-15
Datetime日期及時間的,如:2010-3-15 12:01:56:469
假設你要比較的兩個時間都是Datetime類型數據,它們不相等的可能性也許是99.99%,因為不僅日子要一樣,而且小時、分鍾、秒、微秒都要相等,那才算是一致。
假設交易日期這個數據是今天上午產生的,開始日期是今天下午生成的,那麼,肯定不相等了。
所以你要讓同一天(不管幾點鍾)的相關聯,那就用個函數吧,辦法太多了:
①:將Datetime轉換為Data再比較,where條件:
convert(date,a.交易記賬日期) >= convert(date,b.開始日期)
例如:convert(date, 2010-3-15 19:25:30) 就會返回date型的 2010-3-15 00:00:00,小時分鍾什麼的全是0了,所以同一天的就相等了
②:將它們按你要求的格式轉換為字元串後再比較,where條件:
convert(varchar,a.交易記賬日期,102) >= convert(varchar,b.開始日期,102)
例如:convert(varchar, 2010-3-15 19:25:30, 102) 就會返回字元型的2010.3.15,小時分鍾什麼的全甩掉了
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
請根據這個傳說對號入座,希望有所提醒,如果不是這個原因,咱們再研究~
4. oracle的sql語句怎樣比較兩個時間的大小啊
如果都是date類型,直接使用 大於、小於這些來比較
在sql中,如果是多個欄位比較:
select case when 日期1>日期2 then 日期1 else 日期2 end as 較大的日期 from 表名
如果是同一個欄位內多條值比較,就可以直接用max 和min這些
select max(日期欄位) as 大的日期 from 表名
5. 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