【问题标题】:Fetching records with same Id but between two given dates获取具有相同 ID 但在两个给定日期之间的记录
【发布时间】:2017-05-22 11:41:50
【问题描述】:

我有一张如下表:

我的表

FileNo: |  amount | date
---------------------------------------------------
111     | 55      | 2017-04-07 04:51:45.870
111     | 55      | 2017-04-08 04:51:45.870
111     | 55      | 2017-04-09 04:51:45.870
111     | 55      | 2017-04-10 04:51:45.870
999     | 55      | 2017-04-11 04:51:45.870
111     | 55      | 2017-04-12 04:51:45.870
999     | 55      | 2017-04-13 04:51:45.870
111     | 55      | 2017-04-14 04:51:45.870
999     | 55      | 2017-04-15 04:51:45.870

现在我想获取 FileNo: 为 '111' 且日期介于 '04/07/2017' 和 '04/10/2017' 之间的记录

我的查询如下:-

select * from MyTable where FileNo: = 111 and date >= '04/07/2017' and date <= '04/10/2017' 

但它不起作用,没有发现错误,它没有返回任何记录,它只是显示空表!是我的语法错误还是我缺少“分组依据”或任何其他条款?

【问题讨论】:

标签: sql sql-server-2012


【解决方案1】:

如果是 MSSQL Server 那就试试

SELECT * FROM MyTable 
WHERE FileNo: = 111
  AND CAST(date AS DATE) BETWEEN '2017-07-04' AND '2017-10-04'

【讨论】:

  • 很高兴能帮上忙
【解决方案2】:

您的日期文字格式错误。尝试改用 ANSI 标准 yyyy-MM-dd

select *
from MyTable
where FileNo: = 111 and
      date between '2017-07-04' and '2017-10-04'

【讨论】:

    【解决方案3】:
    select * from MyTable where FileNo: = 111 and date >= '04/07/2017' and date <= '04/10/2017'
    

    此查询是正确的,因此您没有看到任何错误。但是,不会匹配任何日期。

    请注意:

    • 2017-04-07 04:51:45.870 = 07 April 2017;和
    • 04/10/2017 = 04 October 2017

    因此,您永远不会期望在那里看到任何结果。

    解决方案

    select * from MyTable where FileNo: = 111 and date >= '2017-04-07' and date <= '2017-04-15'
    

    同时删除时间仅使用日期,即yyyy-MM-dd NOT yyyy-MM-dd hhmmss

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2019-03-14
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多