Typ danych dla samego roku przy tworzeniu tabeli

1

Cześć
Jaki typ danych w postgresql```sql dać przy tworzeniu kolumny rok wydania? Jak daje date, timestamp to wyskakuje błąd invalid input syntax for type timestamp: "2017"

create table ksiazka
(
id serial not null,
rok_wydania timestamp(4),
constraint ksiazka_pkey primary key (id)
);

insert into (rok_wydania) values ('2017');
3

Int?

2

To jak już smallint.

1

Int i smallint działają, dzięki

3

Ale tu nie chodzi co działa! Chodzi o to co powinno zostać wybrane. I z założenia dobierasz typ danych który jest najlżejszy (zajmuje najmniej miejsca) i spełnia Twoje kryteria. Także w tym wypadku jest to smallint które jest 2x mniejsze niz int a możesz tam wpisać liczby od -32768 do +32767.
Patrz tabela: https://www.postgresql.org/docs/9.1/datatype-numeric.html

0

Wykładowca kazał by wyświetlało się 2017 bez przecinka.

5
Marta Długa napisał(a):

Wykładowca kazał by wyświetlało się 2017 bez przecinka.

Wyświetlanie liczby całkowitej w formacie niemieckim, amerykańskich czy jakimś innych (z przecinkiem miedzy tysiącami) nie zależy od bazy danych, tylko od narzędzia w jakim to przeglądasz
Tam szukaj źródła problemu

UPDATE: typ smalint jest zdecydowanie dobry wyborem.

3

Co to znaczy "wyświetlało się" gdzie ma się wyświetlać ? Dane w bazie trzymasz bez przecinka a ze wyświetla Ci tak liczby na podstawie ustawień regionalnych oprogramowania które używasz to inna sprawa.

Edit: Any mnie uprzedził :)

4

Na marginesie wątku, do wyjadaczy, nie zeby p. Marta się przejmowała.

Smallint zachowa się poprawnie nawet w starozytności, sortorowania, takie tam - za jednym wyjątkiem, liczenie wieku (odstępu czasu) pne / ne.

Macie w świeżej "pamięci podręcznej", że nie było roku zerowego? Nie żeby brak tej wiedzy dyskwalifikował, raczej news z pogranicza "wiedzy niepotrzebnej"

0

Jeśli typ danych dam varchar to czy z tego powodu mogą być problemy przy modyfikacji kolumny, tabeli, przy zapytaniach?
Tylko varchar wyświetla bez przecinka.

2

Varchar to jest typ tekstowy. Możesz w nim trzymać datę (rok) jako tekst, ale to nie jest dobre rozwiązanie.
Skoro rok to jest numerek, to powinnaś trzymać go w polu liczbowym.

A co do "czy mogą być problemy' - napisz jaśniej co masz na myśli.

0

napisałam wyżej jakie problemy - napisałam problemy przy modyfikacji kolumny, tabeli, przy zapytaniach.

0

No ale czym są "problemy przy modyfikacji kolumny albo tabeli"?
Bo zadałaś pytanie, ale za bardzo go nie rozumiem. I tutaj akurat nie chodzi o to, że problem jest po stronie moich ograniczonych umiejętności rozumienia i przyswajania czytanych treści ;)
Wyjaśnij o co Ci chodzi to coś wymyślimy i doradzimy.

0

Jestem początkująca więc nie wiem jakie problemy. Jakiekolwiek problemy , jak będę w przyszłości cokolwiek robiła z tą tabelą, kolumną.

1
Marta Długa napisał(a):

napisałam wyżej jakie problemy - napisałam problemy przy modyfikacji kolumny, tabeli, przy zapytaniach.

Np sortowanie liczb schowanych w varchar jest wątpliwe

111 < 22

0

Typ kolumny nie ma większego znaczenia przy operacjach, które mają go modyfikować.

Może to mieć znaczenie przy bardziej zaawansowanych rzeczach - np. jakbyś chciała założyć tutaj indeks, to inaczej się zachowa indeks na kolumnie typu liczbowego, a inaczej na tekstowej.

Tak samo kwestia sortowania - przy numerkach jest to proste, przy tekstach spawa się komplikuje - np. w zależności od ustawień collate Ł może być albo po L albo na samym końcu, po Z. Ale te rzeczy nie mają zastosowania w Twoim przypadku - bo nawet jakbyś dała te lata/roki w postaci tekstów, to i tak zostaną one posortowane zgodnie z oczekiwaniami. Chociaż - tutaj temat do przemyślenia, albo niech się wypowie ktoś, kto jest pewien (ja nie jestem, a nie chce mi się sprawdzać) co będzie w przypadku, jeśli mamy różną ilość cyfr. Czy 933 w przypadku wpisania daty jako varchar będzie przed czy po 2021? Bo jeśli potraktujemy to jako tekst, to 2 jest przed 9, więc chyba posortuje niezgodnie z numeracją lat, ale raczej z kolejnością cyfr zgodnie z ASCII.

0
Marta Długa napisał(a):

Jeśli typ danych dam varchar to czy z tego powodu mogą być problemy przy modyfikacji kolumny, tabeli, przy zapytaniach?

Tylko varchar wyświetla bez przecinka.

Przyjmij do wiadomości, ze problem formatowania jest gdzie indziej.
Lepiej się nauczyć "używać widelca" a nie "zmieniać na łyżkę" - lub na odwrót.

Czy schabowego jesz łyżką? Bo na pewno jakoś da się (mimo rad mądrych/przemądrzałych ludzi)

0

Czy jest jakiś sposób żeby przy tworzeniu tabeli utworzyć kolumnę sam rok tak żeby potem 2017 wyświetlało mi bez przecinka?
Czy trzeba najpierw utworzyć z integer a potem zmienić do wyświetlania.

0

Ale już miałaś napisane - to, że się wyświetla z przecinkiem nie oznacza, że jest to zapisane w bazie jako ułamek.
Nawet nie może - bo jeśli masz tą kolumnę zdefiniowaną jako int albo smallint to taka liczba jest liczbą całkowitą, nie posiada części ułamkowej.

A to, że się wyświetla w jakiś sposób jest jedynie kwestią formatowania/ustawień regionalnych itp.

1

hej

to co jest w bazie danych to jedno.. a jak to wyświetlasz "format'uszej" to drugie. może sobie zdefiniować kolumnę datatime i [przy wyświetlaniu danych z tej kolumny poprosić tylko o "YYYY"
jak zrobisz int to bedzie dzialalo ale gdy zajdzie potrzeba wyciagnięcia danych np dzien, godzina to juz będziesz mial problem.. a w przypadku jak bedziesz mial datatime to prosisz tylko o "dd" czy "HH"

1 użytkowników online, w tym zalogowanych: 0, gości: 1