Создание переменной даты для использования в операторе SELECT

Привет, я был бы очень признателен за помощь. Я хотел бы объявить 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

person robertkim    schedule 08.09.2015    source источник
comment
Какую СУБД вы используете?   -  person JNevill    schedule 08.09.2015
comment
Вы можете использовать файл .sql, чтобы содержать как объявление переменной, так и sql, чтобы уменьшить повторение, но я не знаю ничего, что позволило бы вам определить переменную, возможно, вы можете использовать таблицу DUAL в Oracle.   -  person Pradeep Pati    schedule 08.09.2015
comment
Я просто использую жабу для извлечения данных из таблицы базы данных оракула sql. Я был бы очень признателен за любую помощь   -  person robertkim    schedule 08.09.2015


Ответы (2)


Согласно документации для Oracle, вы следует использовать оператор DECLARE.

Этот ответ предоставит более подробную информацию о датах, в частности:

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

Вы не указали, какой тип SQL вы используете (MSSQL, MySQL, Oracle SQL,...). Я могу помочь вам с фрагментом для Microsoft SQL Server.

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 Как правильно установить значение переменной даты и использовать его? в качестве эталона.

person Elvar Helgason    schedule 08.09.2015
comment
Спасибо Эльвар. Таблица находится в Oracle SQL, и я использую жабу для запроса. Тем не менее, я получаю сообщение об ошибке, связанное с символом date2, когда я ожидаю следующего: =,(@%; не нулевой диапазон символов по умолчанию - person robertkim; 08.09.2015