如何按日期字段选择值(不像听起来那么简单)

时间:2014-08-05 05:30:37

标签: sql sql-server

我有一个名为tblMK的表该表包含一个日期时间字段。 我想要做的是创建一个每次select the 2 latest entries (by the datetime column)的查询,然后获取它们之间的日期差异并仅显示它。

我将如何创建此表达式。这不一定是查询,它可以是视图/功能/过程或任何有用的。我创建了一个名为getdatediff的函数,它接收日期,并返回一个字符串(x天y小时z分钟),基本上是计算字段。那我该怎么做呢?

编辑:我每次都需要选择2和2,依此类推,直到最旧的一个。总会有一定数量的行。

3 个答案:

答案 0 :(得分:3)

只使用这样的sql:

create table t1(c1 integer, dt datetime);

insert into t1 values
(1, getdate()),
(2, dateadd(day,1,getdate())),
(3, dateadd(day,2,getdate()));

with temp as (select top 2 dt 
  from t1
  order by dt desc)
select datediff(day,min(dt),max(dt)) as diff_of_dates
from temp;

sql fiddle

答案 1 :(得分:0)

关于MySQL使用限制条款

select max(a.updated_at)-min(a.updated_at)
From
( select * from mytable order by updated_at desc limit 2 ) a

答案 2 :(得分:0)

谢谢大家,我找到了解决方案,请忽略它们对我的数据库的其他列:

; with numbered as (
Select part,taarich,hulia,mesirakabala,
rowno = row_number() OVER (Partition by parit    order.by taarich)
From tblMK)
Select a.rowno-1,a.part,  a.Julia,b.taarich,as.taarich_kabala,a.taarich,  a.mesirakabala,getdatediff(b.taarich,a.taarich) as due
From numbered a
Left join numbered b ON b.parit=a.parit
And b.rowno = a.rowno - 1
Where b.taarich is not null
Order by part,taarich 

对于我可能犯的错误感到抱歉,我在智能手机上。