Firebird SQL - daty

phaxe
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad rok
  • Postów:43
0

Mam takie zapytanie do bazy Firebirda:

Kopiuj
SELECT ID, DATA1, DATA2
FROM TABTEST

DATA1 jest typu DATE
DATA2 jest typu VARCHAR(8)
Otrzymuję taki przykładowy wynik:

Kopiuj
ID DATA1 DATA2
1 05.11.2005 20070523
2 21.03.1999 19991111
...

Na strukturę bazy nie mam wpływu a potrzebuję w wyniku SELECT-a otrzymać taki wynik (ujednolicony zapis dat):

Kopiuj
ID DATA1 DATA2
1 2005-11-05 2007-05-23
2 1999-03-21 1999-11-11
...

Chodzi o to, że wynik zapytania wędruje do pliku CSV, a tam daty mają być takim ciągiem RRRR-MM-DD.
Rekordów jest kilkaset tysięcy, więc ręczna edycja pliku CSV nie wchodzi w grę.
Czy można to jakoś przekonwertować w locie w zapytaniu SELECT?

mariano901229
  • Rejestracja:ponad 10 lat
  • Ostatnio:8 miesięcy
  • Postów:597
1

Skorzystaj z substring. Przykład:

Kopiuj
 select substring(DATA1 from 7 for 4)||'-'||substring(DATA1 from 4 for 2) ... from TABTEST
phaxe
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad rok
  • Postów:43
0
mariano901229 napisał(a):

Skorzystaj z substring. Przykład:

Kopiuj
 select substring(DATA1 from 7 for 4)||'-'||substring(DATA1 from 4 for 2) ... from TABTEST

Dzięki za pomoc :)

To działa tylko dla pól typu VARCHAR, czyli w moim przypadku DATA2 (np. '20070523'):

Kopiuj
SELECT SUBSTRING(DATA2 FROM 1 FOR 4)||'-'||SUBSTRING(DATA2 FROM 5 FOR 2)||'-'||SUBSTRING(DATA2 FROM 7 FOR 2) AS DATA2 ... FROM TABTEST

Dla pól typu DATE - u mnie DATA1 (np. 23.05.2007) zrobiłem CAST:

Kopiuj
SELECT CAST(DATA1 AS VARCHAR(10)) AS DATA1 ... FROM TABTEST

i od razu datę przerzuca do łańcucha w takiej postaci: '2007-05-23'

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.