Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 指定日期的有效价格_Sql_Date - Fatal编程技术网

Sql 指定日期的有效价格

Sql 指定日期的有效价格,sql,date,Sql,Date,有一张有日期和价格的桌子 Date Price 2012-01-01 25 2012-01-05 12 2012-01-10 10 是否有某种功能可以让我找到“2012-01-07”的当前价格?在我不知道其他日期的情况下 伪查询:选择当前价格'2012-01-07'所在的价格 谢谢 MySQL: select price from your_table where date <= '201

有一张有日期和价格的桌子

Date Price 2012-01-01 25 2012-01-05 12 2012-01-10 10 是否有某种功能可以让我找到“2012-01-07”的当前价格?在我不知道其他日期的情况下

伪查询:选择当前价格'2012-01-07'所在的价格

谢谢

MySQL:

select price from your_table 
where date <= '2012-01-07'
order by date desc
limit 1
SQL Server:

select top 1 price from your_table 
where date <= '2012-01-07'
order by date desc

如果您不使用ROW_NUMBER,并且想要一个通用的解决方案,则需要在子查询上加入

获取您想要的日期,然后获取该日期的数据

SELECT
  *
FROM
  yourTable
INNER JOIN
(
  SELECT MAX(yourDate) AS maxDate FROM yourTable WHERE yourDate <= @dateParameter
)
  AS lookup
    ON yourTable.yourDate = lookup.maxDate

注意,这不是复制粘贴答案,因为我们不知道日期列的数据类型。

什么数据库管理系统?日期存储为字符串还是日期数据类型?您的表是否具有自动生效id和产品id?能够为您创建查询非常重要。“2012-01-07”的价格是多少?这是最后一次定价还是以其他方式确定的?2012-01-07的当前价格是多少?12-2012-01-05设定的价格?11.2-2012年1月5日设定的价格在2012年1月10日线性下降至10?更奇怪的事?定义你的问题。@SamDeHaan-这是一个标准模式,基于价格在日期之间不变的假设来回答是合理的。指出这是一个假设也是合理的。但可以更贴切地指出这一点。在你的约会对象周围放点东西,除非你真的想要男人,否则这里的人会帮你。。。我转过身去,得到了所有的答案。。。当然是这么简单:
 select price 
 from table1 t 
 where t.date = ( select max(t2.date) 
                  from table1 t2
                  where t2.date <= '2012-01-07' )