【问题标题】:Query to include all transactions for current day + next day until certain time查询以包括当天+第二天直到特定时间的所有交易
【发布时间】:2019-03-26 08:02:35
【问题描述】:

我无法为当天 + 午夜过后 3 小时的所有交易生成查询

这是我的查询的 sn-p

where Date between '1-May-2018' and '2-May-2018' and Time <= '1754-01-01 03:00:00'

我想要 2018 年 5 月 1 日的所有交易,并且只需要 5 月 2 日凌晨 3 点之前的交易。 如何编写此查询?

请注意,日期和时间是单独的列:

日期列示例:2018-10-19 00:00:00.000
时间栏示例:1754-01-01 00:12:58.247

我们需要过滤时间列而不是只过滤日期列吗?

谢谢,

【问题讨论】:

    标签: sql sql-server date datetime time


    【解决方案1】:

    在 where 条件下使用以下条件

    where date='2018-05-01' OR (date='2018-05-02' and TIME(time)<='03:00:00')
    

    【讨论】:

    • 谢谢,但我有一个名为时间的单独列,过滤器应该应用在时间列中吗?
    • @Sequel3 然后将条件时间列放入已编辑的答案
    • @Sequel3 你的时间列的数据类型是什么
    • “2018-05-01”和“2018-05-02”之间的日期以及“1754-01-01 07:00:00.247”和“1754-01-01 03”之间的时间: 00:00.247' 像这样??
    • @Sequel3 where date>='2018-05-01' and date
    【解决方案2】:

    使用Between操作符:

    SELECT * FROM table
    WHERE date  BETWEEN '2018-05-01 00:00:00' AND '2018-05-02 03:00:00';
    

    【讨论】:

      【解决方案3】:

      试试这个:

      WHERE STR_TO_DATE(CONCAT(date, ' ', time), '%Y-%m-%d %H:%i:%s') BETWEEN '2018-05-01 00:00:00' AND '2018-05-02 03:00:00';
      

      还有:时间列是什么类型的?

      【讨论】:

        【解决方案4】:

        假设您使用的是 SQL Server,您需要以下 WHERE 子句:

        WHERE CAST(Date AS DATE) = CAST(CURRENT_TIMESTAMP AS DATE) OR (
              CAST(Date AS DATE) = DATEADD(DAY, 1, CAST(CURRENT_TIMESTAMP AS DATE)) AND
              CAST(Time AS TIME) <= '03:00:00'
        )
        

        【讨论】:

        • 嗨 Salman,我尝试使用第二个查询(Current_Date),SQL 告诉我 CURRENT_DATE 不是内置函数,所以我做了这个 Date = CONVERT(date,GETDATE()) 。而且没关系。现在当我尝试使用 INTERVAL 1 天时..SQL 说无效列
        • 哦等等...你是说问题是关于 SQL SERVER 的吗?
        • 我正在使用 MS SSMS v 14 运行此查询
        • @Sequel3 查看修改后的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        相关资源
        最近更新 更多