【问题标题】:Creating a date variable to use in SELECT statement创建要在 SELECT 语句中使用的日期变量
【发布时间】:2015-09-08 16:12:17
【问题描述】:

您好,非常感谢您的帮助。我想将 2 个变量声明为日期格式为 date1 = 31-AUG-15 和 date2 = 01-SEP-15 的日期,并在 SELECT 语句中使用它,因此当我需要更改日期时,我不需要在任何地方都输入日期。这可能吗?

SELECT TABLE1.TRANSACTION_ID, TABLE1.AMOUNT, TABLE1.MATURITY, TABLE1.TYPE,
TABLE1.EFFECTIVE_DATE, TABLE1.SETTLEMENT_DATE, TABLE2.TRANSACTION_DATE 
FROM TABLE1 
LEFT JOIN TABLE2 ON TABLE1.TRANSACTION_ID = TABLE2.TRANSACTION_ID AND TABLE2.TRANSACTION_DATE = date2
WHERE TABLE1.MATURITY > date1
AND TABLE1.EFFECTIVE_DATE > date1
AND TABLE1.SETTLEMENT_DATE = date1

【问题讨论】:

  • 你用的是什么关系型数据库?
  • 您可以使用 .sql 文件来包含变量声明和 sql 以帮助减少重复,但我不知道任何可以让您定义变量的东西,也许您可​​以使用Oracle 上的 DUAL 表。
  • 我只是使用 toad 从 oracle sql 数据库表中提取数据。我真的很感激任何帮助

标签: sql oracle date declare


【解决方案1】:

根据documentation for Oracle,您应该使用DECLARE 语句。

This answer 将提供有关日期的更多详细信息:

DECLARE 
    date1 DATE := to_date('03/11/2011', 'dd/mm/yyyy');

【讨论】:

    【解决方案2】:

    您没有指定您使用的 SQL 类型(MSSQL、MySQL、Oracle SQL,...)。 我可以帮助您使用 Microsoft SQL Server 的 sn-p。

    DECLARE @date1  DATETIME,
            @date2  DATETIME
    
    SET @date1 := '08-31-15'
    SET @date2 := '09-01-15'
    
    SELECT TABLE1.TRANSACTION_ID, TABLE1.AMOUNT, TABLE1.MATURITY,
           TABLE1.TYPE, TABLE1.EFFECTIVE_DATE, TABLE1.SETTLEMENT_DATE, TABLE2.TRANSACTION_DATE 
    FROM TABLE1 
    LEFT JOIN TABLE2 ON TABLE1.TRANSACTION_ID = TABLE2.TRANSACTION_ID AND TABLE2.TRANSACTION_DATE = date2
    WHERE TABLE1.MATURITY > date1
          AND TABLE1.EFFECTIVE_DATE > date1
          AND TABLE1.SETTLEMENT_DATE = date1
    

    我希望这会有所帮助。 我使用了这个问题的答案:SQL How to correctly set a date variable value and use it? 作为参考。

    【讨论】:

    • 谢谢埃尔瓦。该表在 Oracle SQL 中,我正在使用 toad 进行查询。但是,当我期望以下 :=,(@%; not null range default character 时遇到符号 date2 时出现错误
    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多