【问题标题】:SQL query doesn't work on a specific daySQL 查询在特定日期不起作用
【发布时间】:2018-01-31 13:40:32
【问题描述】:

我在 mysql 中有一个奇怪的问题! 我的查询是

SELECT * FROM aa WHERE problemTime>= '2016/03/20' AND problemTime<= '2016/04/20' 

这个查询的结果什么都没有,但是当我第一次更改为 2016/03/19 或 2016/03/21 时,我有以下结果!我的意思是这些查询

SELECT * FROM aa WHERE problemTime>= '2016/03/21' AND problemTime<= '2016/04/20' 

SELECT * FROM aa WHERE problemTime>= '2016/03/19' AND problemTime<= '2016/04/20' 

两次(19 日和 21 日)的结果都是

但是当我使用 20th 时,结果会注意到

我的主桌是

我将时间格式从 2016/03/20 更改为 2016-03-20 (我的意思是更改 / 到 - )但它也没有更改!

有什么问题?

【问题讨论】:

  • 请以文本格式分享表格数据。

标签: mysql sql time timestamp


【解决方案1】:

如果你的问题时间列是日期时间类型,你真的应该运行这样的查询:

SELECT * FROM aa 
WHERE    
  problemTime>= str_to_date('2016/03/20', '%Y/%m/%d') AND 
  problemTime <= str_to_date('2016/04/20', '%Y/%m/%d')

不要依赖字符串和日期之间的隐式转换。不要理会表数据,并确保将 where 子句参数显式转换为与表中相同的数据类型。还要记住,“没有”时间的日期实际上是相关日期的午夜,而午夜就像零一样,这是任何一天发生的第一件事。给定日期的早上 6 点的时间是在午夜之后,因此查询在特定日期小于或等于午夜的日期意味着早上 6 点的日期将被排除在外

这是一般的良好数据库实践;尽可能不要转换表数据,因为它会导致巨大的性能损失和错误的结果

【讨论】:

    【解决方案2】:

    您的“问题时间”列有日期和时间。不要转换表数据,更改您的 where 子句(添加时间)。

    SELECT * FROM aa WHERE problemTime>= '2016/03/20 00:00:00' AND problemTime<= '2016/04/20 23:59:59'
    

    【讨论】:

      【解决方案3】:

      根据 SQl Server 试试这个。

       SELECT * FROM aa 
       WHERe  cast(problemTime AS date)  between  '2016/03/21' AND '2016/04/20' 
      

      【讨论】:

      • 这个问题与sqlserver无关。不要转换表数据以适合您的 where 子句,转换您的 where 子句以适合您的表。绝对不要将表数据从一种类型转换为另一种类型,然后依赖隐式转换为字符串来匹配您的 where 子句
      • @Caius,需要 where 子句数据转换,因为用户想要日期内的数据而不包括时间。
      • 你错过了我的意思。如果他的表有一百万行,您的查询将强制转换一百万条数据,也意味着该列上的任何索引都将不起作用。永远不要转换表数据,始终转换 where 子句中的参数。您的参数是字符串'2016/03/21' and '2016/04/20',您应该努力转换这些参数,以便它们与表中数据的数据类型相匹配,因为这只是 DB 在编译查询时必须转换为日期的两件事,而不是转换查询运行时的一百万个日期..
      • @Caius,用户根据他对日期范围的要求仅使用日期传递参数。但是表 Column 是 Datetime 数据类型。所以我们需要在 Date 中转换 Datetime 。我同意它会影响性能。有没有其他办法?
      猜你喜欢
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多