【问题标题】:Select date range using SQL使用 SQL 选择日期范围
【发布时间】:2011-01-05 12:32:26
【问题描述】:

我正在尝试使用 SQL 选择日期范围,但遇到了一些问题:

当我按照以下方式运行时:

SELECT ... as edate ...    
WHERE edate 
   BETWEEN To_Date('10/15/2010', 'MM/DD/YYYY') 
   AND To_Date('10/15/2011', 'MM/DD/YYYY')

它会返回一个

ORA-01848: 月份无效

。该表本身包含沿 MM/DD/YYYY HH:mm:ss 行的完整日期值。可能是因为我正在做一个 SELECT edate,其中 edate 不是'cast'作为它无法匹配的日期吗?

当我按照以下方式运行时:

WHERE date BETWEEN '10/15/2010' AND '12/15/2011'

如果它们在 2010 年 10 月 15 日到 2010 年 12 月 31 日的范围内,而不是从 2011 年 1 月 1 日到 2010 年 12 月 15 日的范围内,它将选择正确的日期。换句话说,它不会在一年中结束。

【问题讨论】:

  • 你确定这是 MySQL 吗? ORA-01848 是 Oracle 错误消息,To_Date 是 Oracle 函数

标签: sql mysql date


【解决方案1】:

试试这个。 WHERE to_Date(edate,'MM/DD/YYYY')

我是一个 SQL 人,但我认为如果你转换 eDate 你应该很好。

【讨论】:

  • 抱歉,我的意思是“选择 ... 作为 edate”,所以 edate 没有实际意义,我不能在 To_Date(edate, 'MM/DD/YYYY') AND To_Date 之间进行 WHERE edate (日期,'MM/DD/YYYY')
【解决方案2】:

要回答我自己的问题,是的,为了比较苹果和苹果,我需要

select to_date(value, 'MM/DD/YYYY HH24:MI:SS') ... as edate

也可以使用

To_Date('10/15/2011', 'MM/DD/YYYY HH24:MI:SS')

为了进行适当的日期与日期比较。

【讨论】:

  • 那么你应该接受@DB 的回答,因为他比你早 30 分钟回答了这个问题。 :|
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多