1

Temat: Rok przestępny oraz zmiana typu danych

Witam,
Kolejne pytanie z serii Laik i potrzebie.
Chciałbym wyświetlić firmy które rozpoczęły działalność w roku przestępnym

SELECT * FROM (
    SELECT "Name",
        extract('year' from "StartDate") AS "rok start"
    FROM "Company"
    ) d
WHERE "rok_start" % 4 = 0
    AND "rok_start"%100 <> 0
    OR ("rok_start"%100=0 AND "rok_start"%400=0)

Reszta z dzielenia działa tylko dla typu integer a "rok_start" jest double precision.
Nie wiem jak to rozwiązać?
Moim jedynym pomysłem jest utworzyć nową kolumnę a potem za pomocą INSERT wstawić do niej wartości "rok_start" ale to chyba nie jest dobre rozwiązanie bo i tak typy nie będą się zgadzać??

2

Odp: Rok przestępny oraz zmiana typu danych

jeśli tylko chcesz firmy w roku poprzednim to zerknij na zapytanie

  SELECT *
     FROM "Company"
  WHERE extract('year' from current_date) - extract('year' from "StartDate") = 1;

PS
Możesz przekonwertować wynik z double precision na integer w ten "sposób extract('year' from current_date)::integer" tak by móc wyliczyć modulo

Ostatnio edytowany przez c_michal (2015-12-29 16:10:53)

3

Odp: Rok przestępny oraz zmiana typu danych

Ostatnio edytowany przez cogi94 (2015-12-29 16:11:35)

4

Odp: Rok przestępny oraz zmiana typu danych

SELECT * FROM (
    SELECT "Name",
        extract('year' from "StartDate")::integer AS rok_start
    FROM "Company"
    ) d
WHERE rok_start % 4 = 0
    AND rok_start%100 <> 0
    OR (rok_start %100=0 AND rok_start %400=0)

Ostatnio edytowany przez c_michal (2015-12-29 16:15:10)

5

Odp: Rok przestępny oraz zmiana typu danych

Wielkie dzięki wink