sql最近的
1. 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来取吧
2. sql语句怎么查询时间最近的
表里增加datetime字段 假如字段名为:updatetime
select top 1 from 表 where 类别 = 'A' order by updatetime desc
select top 1 from 表 where 类别 = 'B' order by updatetime desc
select top 1 from 表 where 类别 = 'C' order by updatetime desc
分别对应 A的最近一条信息,B的最近一条信息,C的最近一条信息
3. sql中,取时间最近的一条记录
select
*
from
test
A
where
date=(select
max(date)
from
test
B
where
A.sub_dh=B.sub_dh)
4. 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 时,情况也是这样的。
5. sql 查询 大于 并且距离 当前日期 最近的一条记录
可以参考以下几种方法:
1、sqlserver的语法:
select * from table t where t.date = ( select min( date ) from tablet1wheret1>= getdate() )
2、在oracle中可写成如下:
select * from 表 whereRQin (select min(RQ) from 表 whereRQ>sysdate);
(5)sql最近的扩展阅读:
SQL参考语句
增加列
Alter table table_name add column_name column_type [default 默认值]--在表中增加一列,[]内的内容为可选项
删除列
Alter table table_name drop column column_name--从表中删除一列
添加主键
Alter table tabname add primary key(col)