Фиксирование форматов даты в SQL - PullRequest
0 голосов
/ 05 июля 2018
SELECT "Trade Details 2".Portfolio, 
       "Trade Details 2".CONTRACT_ID, 
       "Trade Details 2".START_DATE, 
       "Trade Details 2".MATURITY_DATE, 
       "Trade Details 2".NOTIONAL1,
       "Trade Details 2".CONTRACT_NPV,
       "Trade Details".TERM
FROM "Trade Details 2" 
JOIN "Trade Details" 
WHERE "Trade Details 2".CONTRACT_ID="Trade Details".FCC_ID and
      ("Trade Details 2".NOTIONAL1 > "0.0") and
      ("Trade Details 2".MATURITY_DATE > "20180621")

ORDER BY CONTRACT_ID asc

Я пытаюсь исправить форматы даты для моих столбцов START_DATE и MATURITY_DATE в таблицах, к которым я присоединился в этом запросе. Формат START_DATE выглядит следующим образом: 2018-06-22 00:00:00, а MATURITY_DATE - 20180622. Я хотел бы иметь возможность исправить это, чтобы оба столбца имели одинаковый формат, предпочтительно просто 2018-06-22. Я уже пробовал в Python, используя: input_string = '20191217'

start_date=pd.to_datetime(input_string[-2:]+input_string[4:6]+ 
input_string[:4], dayfirst=True)

но это не сработало, просто заявлен неверный синтаксис. Есть ли способ в SQL или Python, чтобы эти два столбца имели одинаковую дату?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

РЕДАКТИРОВАТЬ: Изменен запрос для БД SQLite

SELECT "Trade Details 2".Portfolio, 
       "Trade Details 2".CONTRACT_ID, 
       DATE("Trade Details 2".START_DATE) as START_DATE, 
       DATE(substr("Trade Details 2".MATURITY_DATE, 0, 5) || '-' || substr("Trade Details 2".MATURITY_DATE, 5,2) || '-' ||    substr("Trade Details 2".MATURITY_DATE, 7, 9)) as MATURITY_DATE, 
       "Trade Details 2".NOTIONAL1,
       "Trade Details 2".CONTRACT_NPV,
       "Trade Details".TERM
FROM "Trade Details 2" 
JOIN "Trade Details" 
WHERE "Trade Details 2".CONTRACT_ID="Trade Details".FCC_ID and
      ("Trade Details 2".NOTIONAL1 > "0.0") and
      ("Trade Details 2".MATURITY_DATE > DATE(substr('20180602', 0, 5) || '-' || substr('20180602', 5,2) || '-' ||    substr('20180602', 7, 9)) )

ORDER BY CONTRACT_ID asc
0 голосов
/ 05 июля 2018

Какую СУБД вы используете? Вам необходимо преобразовать дату начала с помощью STR_TO_DATE('your string', '%Y-%m-%d'), например.

SELECT STR_TO_DATE('2018-06-22', '%Y-%m-%d') FROM DUAL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...