Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL Server 2014选择具有给定日期的单行_Sql Server_Database - Fatal编程技术网

Sql server 使用SQL Server 2014选择具有给定日期的单行

Sql server 使用SQL Server 2014选择具有给定日期的单行,sql-server,database,Sql Server,Database,尝试编写使用给定日期返回id的SQL查询 如果该日期不在表中,则应返回与给定日期最近的日期 因此……如果输入日期是2016年1月2日,它将返回id 1,因为这是最接近的匹配 如果输入日期为2003年12月2日,则返回id 5--Edited-- 使用“abs”获取最接近的数字 Table1 ___________________ id Date 1 2016/1/05 2 2012/5/09 3 2010/6/23 4 2009/7/18 5 200

尝试编写使用给定日期返回id的SQL查询

如果该日期不在表中,则应返回与给定日期最近的日期

因此……如果输入日期是2016年1月2日,它将返回id 1,因为这是最接近的匹配

如果输入日期为2003年12月2日,则返回id 5--Edited--

使用“abs”获取最接近的数字

Table1
___________________
id    Date
1     2016/1/05
2     2012/5/09
3     2010/6/23
4     2009/7/18
5     2002/2/13
--编辑--

使用“abs”获取最接近的数字

Table1
___________________
id    Date
1     2016/1/05
2     2012/5/09
3     2010/6/23
4     2009/7/18
5     2002/2/13

您可以尝试这样的伪代码

declare @t1 as table (id int,date datetime)
insert into @t1 select 1,'2016/1/05'
insert into @t1 select 2,'2012/5/09'
insert into @t1 select 3,'2010/6/23'
insert into @t1 select 4,'2009/7/18'
insert into @t1 select 5,'2002/2/13'

declare @inputDate datetime = '2003/2/12'
select top 1.id from @t1 order by abs(datediff(dd,date,@inputDate))

set @inputDate = '2016/1/02'
select top 1.id from @t1 order by abs(datediff(dd,date,@inputDate))

您可以尝试这样的伪代码

declare @t1 as table (id int,date datetime)
insert into @t1 select 1,'2016/1/05'
insert into @t1 select 2,'2012/5/09'
insert into @t1 select 3,'2010/6/23'
insert into @t1 select 4,'2009/7/18'
insert into @t1 select 5,'2002/2/13'

declare @inputDate datetime = '2003/2/12'
select top 1.id from @t1 order by abs(datediff(dd,date,@inputDate))

set @inputDate = '2016/1/02'
select top 1.id from @t1 order by abs(datediff(dd,date,@inputDate))

不起作用,最近的日期也可以更大。你必须得到两个日期,一个大一个小,然后比较这两个日期,看哪一个是最近的。不起作用,最近的日期也可以更大。你必须得到两个日期,一个大一个小,然后比较这两个日期,看哪一个是最近的。