sql多條資料各自的最大日期

時間 2022-02-07 03:00:07

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索引...