首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据日期获取最新记录

根据日期获取最新记录
EN

Stack Overflow用户
提问于 2013-01-31 15:12:12
回答 4查看 153关注 0票数 1

我有SQL表在SQL server 2008,我想获得最新的记录,这取决于它的日期。

我已经编写了一个查询,如下

代码语言:javascript
运行
复制
  SELECT TOP 1 * 
    FROM ProductPrice
   WHERE ProductID = 1698
     AND EffectiveFrom <= '1/31/2013'
ORDER BY EffectiveFrom DESC

在数据库中有一条记录,其中包含日期2013-01-31 12:12:49.000

现在我期望上面的查询将返回1条记录,但它没有返回任何东西,我应该在查询中更改什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-31 15:16:42

因为表中的数据不仅包含日期,还包含时间

代码语言:javascript
运行
复制
  SELECT TOP 1 * 
    FROM ProductPrice
   WHERE ProductID = 1698
     AND CAST(EffectiveFrom AS date) <= '1/31/2013'
ORDER BY EffectiveFrom DESC

代码语言:javascript
运行
复制
  SELECT TOP 1 * 
    FROM ProductPrice
   WHERE ProductID = 1698
     AND EffectiveFrom <= DATEADD(SECOND, 86399, '1/31/2013')
ORDER BY EffectiveFrom DESC 
票数 1
EN

Stack Overflow用户

发布于 2013-01-31 15:15:44

关键是你的约会是一个日期时间...除非您通过cast/convert删除时间戳,或者更改where子句。2013-01-01 HH:MM:SS将始终是> 01/01/2013

代码语言:javascript
运行
复制
  SELECT TOP 1 * 
    FROM ProductPrice
   WHERE ProductID = 1698
     AND CONVERT(CHAR(8), EffectiveFrom, 112) <= '20130101'
ORDER BY EffectiveFrom DESC 
票数 1
EN

Stack Overflow用户

发布于 2013-01-31 15:17:27

您需要将查询转换为类似以下内容:

代码语言:javascript
运行
复制
SELECT TOP 1 *  
FROM ProductPrice 
WHERE  ProductID = 1698 
   AND CONVERT(DATE,EffectiveFrom) <= '1/31/2013' 
ORDER BY EffectiveFrom DESC 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14620319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档