1樓:匿名使用者
selecct ct.* from (select scardnum num,max(日期列) dt from cards group by scardnum) tmp left join cards ct on ct.scardnum= tmp.
num and ct.日期列=tmp.dt
2樓:匿名使用者
select * from cards a
where not exists
(select 1 from cards where acardnum=a.acardnum and srcvouchdate>a.srcvouchdate)
3樓:匿名使用者
以scardnum分組,取出最大時間的記錄
select * from cards where srcvouchdate in (select max(srcvouchdate) from userlist group by scardnum)
4樓:拂袖聽風
select a.* from cards a
inner join (select scardnum,max(srcvouchdate) maxdate from cards group by scardnum) b
on a.scardnum=b.scardnum and a.srcvouchdate=b.maxdate
5樓:匿名使用者
select * from cards where scardnum in(select scardnum,max(srcvouchdate) from cards group scardnum);
sql多個記錄取時間最近的值
6樓:卷琇晶後鈴
物料品類:name
時間date
**pri
如果你的資料像你寫的這樣錄入,各品類的更新時間都是一致的情況下,可以這樣:
select
*from
table
order
bydate
desc
rownum<=物料品類數
如果你不能確定更新時間是否一致,就比較麻煩了,恐怕只能一個一個篩選了。
7樓:
把時間轉換成數字格式再進行比較即可,或者與系統時間對比,獲取時間差,得到最小的時間差也行
8樓:銀溪枚曜
oracle
可以直接函式取
greatest(repdate,repcreatedate,repaudittime,printime)
mssqlserver可能先列轉行求分組最大,沒有測試環境,忘記了
9樓:匿名使用者
能把表結構發來看一下嗎?
假設表結構如下:
talbea(wlname,price ,dtime)查詢結果如下:
select wlname,price ,dtimefrom tablea x
where dtime =
(select max(dtime)
from tablea y
where y.wlname=x.wlname)其中wlname表示物料名字
按照你的修改如下:只不過把tablea改為你的表名即可select 物料,時間,**
from tablea x
where 時間=
(select max(時間)
from tablea y
where x. 物料=y.物料)
我已經測試通過,如果你測試不通的話,就要考慮你欄位型別是否跟我定義的一致
10樓:匿名使用者
select * from table order by date desc limit 1
按照時間的降序排列 然後取第一條資料就行了
11樓:
select top 1 jiage from tablename order by date desc
12樓:
select top 1 price from 表 order by month desc
sql語句 怎樣比較兩個日期的大小,簡單一點的
13樓:匿名使用者
慣例,在等號左邊儘量不要有對欄位的運算,所以一般用法有:
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
14樓:year好好學習
select 2>1 into num from dual; oracle
select 2>1 into num; mysql
看這個num就行
15樓:
建議你寫儲存過程吧!sql寫的話用函式會很麻煩的
16樓:匿名使用者
就用大小於號就行了。比如 select * from [mytable] where [mydate] > '2013-01-01'
17樓:威爾恩斯
select datediff(day, '2012-12-30', '2013-01-06')
結果為:7 天
18樓:匿名使用者
sql datediff
19樓:匿名使用者
select case when dateadd(day,6,'2012-12-10')<'2012-12-15' then '2012-12-10' else '2012-12-15' end
sql語句如何將表中的多條資料顯示在一行呢
不需要那麼複雜 create table student id int,name varchar 255 age int,gender varchar 255 insert into student values 1,張三 18,男 insert into student values 2,李四 2...
SQL語句怎麼刪除指定日期的資料
你的欄位裡面,必須有個記錄日期的吧。以oracle為例。如果你的記錄日期的欄位為字串型別的。delete from t1 where 2012 11 06 如果你的記錄日期的欄位為日期型別的。delete from t1 where to char yyyy mm dd 2012 11 06 如果記...
ASP中SQL資料庫關於日期的錯誤
在sql中datediff d是不需要 的,你試試datediff d,date1,date2 我仔細看了下,錯誤不少。1 datediff中的d不要 2 sql中的date 函式不對,應該是getdate 3 format 函式不對,應該是cast 或 convert 具體用法你自己去查sql索引...