【问题标题】:Search between dates in SQl在 SQL 中的日期之间搜索
【发布时间】:2015-07-30 10:41:06
【问题描述】:

我的表单中有一个日期选择器,它在提交表单时生成一个开始日期和结束日期。两者的日期格式均为'#date_format' => 'Y-m-d',。在我的 oracle DB 中,我需要将这两个输入与日期格式 date('Y-m-d') 的列值 TIMESTAMP 进行比较。我的 SQL 查询是

SELECT TITLE 
FROM TABLE 
WHERE TIMESTAMP BETWEEN '2015-07-15' AND '2015-07-30' 
GROUP BY TITLE ORDER BY TITLE ASC

我可以这样搜索吗?我没有得到任何结果。

【问题讨论】:

    标签: sql oracle date-comparison


    【解决方案1】:

    “2015-07-15”和“2015-07-30”之间的时间戳

    您正在将 DATEstring 进行比较。您必须使用 TO_DATE 将字符串显式转换为日期。

    例如,

    WHERE TIMESTAMP 
    BETWEEN 
       TO_DATE('2015-07-15', 'YYYY-MM-DD') 
    AND 
       TO_DATE('2015-07-30', 'YYYY-MM-DD')
    

    当你只有固定文字格式的日期元素时,我更喜欢ANSI日期文字

    DATE '2015-07-15'
    

    使用 ANSI 日期文字,可以用更少的代码编写上述查询:

    WHERE TIMESTAMP 
    BETWEEN 
       DATE '2015-07-15'
    AND 
       DATE '2015-07-30'
    

    【讨论】:

      【解决方案2】:

      试试这个MSSQL Query

      SELECT TITLE FROM TABLE WHERE  convert(varchar(50),TIMESTAMP ,111)
      BETWEEN '2015-07-15' AND '2015-07-30' GROUP BY TITLE ORDER BY TITLE ASC
      

      【讨论】:

      • Oracle 中没有convert()
      • 它是针对有问题的 SQL 编写的
      • SQL 中也没有convert()。 “SQL”只是一种查询语言,不是特定的DBMS产品。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2019-07-28
      • 2012-09-30
      • 1970-01-01
      • 2015-07-01
      相关资源
      最近更新 更多