A. sql获取与当前日期最近的数据
select * from table where replace(DTime,'/','-')=(select max(replace(DTime,'/','-')) from table )你再试试
B. sql如何取当前时间最近的一条记录
select*from
(selecttop1*from表名orderbydate1)table1orderbydate1desc
C. sql中,取时间最近的一条记录
selecttest.sub_dh,test.date,test.Gname
fromtest,(SELECTSub_dhasdh,MAX(Date)asdateFROMdbo.testGROUPBYSUB_DH)a
wheretest.Sub_dh=a.dh
andtest.date=a.date
看你写的SQL,GROUPBY的用法还是没有太理解
D. sql如何筛选出离今天最近的日期
select top1*fromtableorderbydatefielddesc
按时间倒序排,取出最后一条记录就是最近的
E. 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字段需要时日期类型,如果不是需要做转换
F. 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来取吧
G. SQL多个记录取时间最近的值
物料品类:name
时间
date
价格
pri
如果你的数据像你写的这样录入,各品类的更新时间都是一致的情况下,可以这样:
select
*
from
table
order
by
date
desc
rownum<=物料品类数
如果你不能确定更新时间是否一致,就比较麻烦了,恐怕只能一个一个筛选了。
H. SQL中如何 取某一列中最靠近当前时间的值
select * from
(
select PID,Cdate,row_number() over (partition by PID order by Cdate DESC) rn from G
)
where rn = 1
I. 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 时,情况也是这样的。
J. sql中如何取重复的数据取时间最近的一条
既然数据都重复,就时间不同,那就取max(时间)就行了吧
select 重复数据的列名1,重复数据的列名2,....,max(时间列) from table group by 重复数据的列名1,重复数据的列名2,....