sql最近日期
『壹』 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 時,情況也是這樣的。
『貳』 sql今天的日期怎麼表示
sqlserver使用getdate函數,mysql使用now函數。
如果時間戳是字元串型的,格式通常是yyyy-mm-dd,因此前四位是年,第六、七位是月,最後兩位是日。用substring函數來截取,substring(欄位名,1,4)是年份,substring(欄位名,6,2)是月份,substring(欄位名,9,2)是日。
『叄』 sql 如何獲取資料庫中最接近當天日期的那一條記錄
select top(1)* from 表名 order by 日期欄位 desc
『肆』 sql如何取得當前日期
getdate //獲得系統當前日期
datepart //獲取日期指定部分(年月日時分表)
getdate()函數:取得系統當前的日期和時間。返回值為datetime類型的。
用法:getdate()
使用時間和日期的函數
getdate():獲取系統當前時間
dateadd(datepart,number,date):計算在一個時間的基礎上增加一個時間後的新時間值,比如:dateadd(yy,30,getdate())
datediff(datepart,startdate,enddate):計算兩個時間的差值,比如:datediff(yy,getdate(),'2008-08-08')
dataname(datepart,date):獲取時間不同部分的值,返回值為字元串
datepart(datepart,date):和datename相似,只是返回值為整型
day(date):獲取指定時間的天數
month(date):獲取指定時間的月份
year(date):獲取指定時間的年份
看以上具體參數
資料庫段有一項為time欄位,類型為日期/時間,我有以下SQL語句取系統當前時間插入:
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
『伍』 sql如何篩選出離今天最近的日期
select top1*fromtableorderbydatefielddesc
按時間倒序排,取出最後一條記錄就是最近的
『陸』 怎樣用SQL語句求出整個TABLE里的日期里的最近的日期
最近的日期?只求一個日期嗎?
在sql,時間越後就越大。
所以可以用
max(日期)
max是sql的一個函數,自動提取所選定列表中的最大值。
如果要求若干個最近日期
就用order by
『柒』 sql最近日期查詢
這個SQL不知道能不能實現,但可以查找出來你需要日期的左右各N天(N你自己設)然後放進數組,用Javascript之類的比較
『捌』 sql如何查詢資料庫中最近日期的數據
select max(日期欄位) from table_name --得到的就是最近的日期
『玖』 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欄位需要時日期類型,如果不是需要做轉換
『拾』 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來取吧