A. sql獲取與當前日期最近的數據
select * from table where replace(DTime,'/','-')=(select max(replace(DTime,'/','-')) from table )你再試試
B. sql如何取當前時間最近的一條記錄
select*from
(selecttop1*from表名orderbydate1)table1orderbydate1desc
C. sql中,取時間最近的一條記錄
selecttest.sub_dh,test.date,test.Gname
fromtest,(SELECTSub_dhasdh,MAX(Date)asdateFROMdbo.testGROUPBYSUB_DH)a
wheretest.Sub_dh=a.dh
andtest.date=a.date
看你寫的SQL,GROUPBY的用法還是沒有太理解
D. sql如何篩選出離今天最近的日期
select top1*fromtableorderbydatefielddesc
按時間倒序排,取出最後一條記錄就是最近的
E. Sql查詢距離指定日期最近日期的一條數據
不同資料庫有不同的寫法,不過思路是一樣的,就是欄位的日期形式減去2008-12-20,然後取絕對值的最小值。找到這個最小值就可以了。
枚舉2個資料庫的寫法
MS SQL SERVER,
select * from table_name
where abs(column_name-convert(datetime,'20081220',112)) in (
select min(abs(column_name-convert(datetime,'20081220',112))) from table_name)
ORACLE
select * from table_name
where abs(column_name-to_date('20081220','yyyymmdd')) in (
select min(abs(column_name-to_date('20081220','yyyymmdd'))) from
table_name
)
註:column_name欄位需要時日期類型,如果不是需要做轉換
F. sql 如何選擇最近的日期
呵呵,midasblesshj的方法其實第一種是好的,但是第二種要是把abs函數去掉了那就壞了,因為去掉了abs,無論你怎樣做,取到的永遠都是最小日期的值,當查詢日期比20090605大時,結果正確,但是比他小時,結果就是錯了的,因為min函數可以是負的,最小的負數則離目標結果很遠了。
正確的應該就是第一個語句,要去除重復加distinct:
select distincr * from 表 where abs(datediff(d,date,'20090605'))=(select min(abs(datediff(d,date,'20090605')))from 表)
但是又正如midasblesshj所說,有個問題,當查詢'20090605'時,離他最近的有可能有兩個值,比如'20090604'和'20090606'。
所以這就需要樓主做取捨了 如果兩個都要,則什麼都不加,只要一個,則利用top和order by :
select distincr top 1 * from 表 where abs(datediff(d,date,'20090605'))=(select min(abs(datediff(d,date,'20090605')))from 表) order by date
當然 是要大的還是小的那個,就使用asc和desc來取吧
G. SQL多個記錄取時間最近的值
物料品類:name
時間
date
價格
pri
如果你的數據像你寫的這樣錄入,各品類的更新時間都是一致的情況下,可以這樣:
select
*
from
table
order
by
date
desc
rownum<=物料品類數
如果你不能確定更新時間是否一致,就比較麻煩了,恐怕只能一個一個篩選了。
H. SQL中如何 取某一列中最靠近當前時間的值
select * from
(
select PID,Cdate,row_number() over (partition by PID order by Cdate DESC) rn from G
)
where rn = 1
I. sql 如何查詢同一個欄位中,日期最近的那個記錄
使用「order by 欄位名 desc」對日期欄位進行倒序排序即可。
sql語法:select * from 表名 order by 日期欄位名 desc
其中,排序的時候order by 後面跟著需要進行排序的欄位名,排序可以有兩種,默認是asc升序(在sql中可以不寫),如果希望降序排列的話,可以使用desc。如你想要最近的日期的話就只需要降序即可。
舉例:如tpl_purchase_order 是我的訂單表,該表有一個欄位創建日期(欄位名:CREDATE)是日期類型,希望通過sql實現按照按照創建日期由近到遠的順序排列。
對應sql:select * from tpl_purchase_order order by credate desc;
sql執行後輸出結果為:
注意:在以上的結果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的。
J. sql中如何取重復的數據取時間最近的一條
既然數據都重復,就時間不同,那就取max(時間)就行了吧
select 重復數據的列名1,重復數據的列名2,....,max(時間列) from table group by 重復數據的列名1,重復數據的列名2,....