1

Temat: Jak dodać date?

witam

Czytam i czytam, ale nie bardzo widze typ danych odpowiadających: (dzien)-(miesiąc)-(rok)
I jak to ma wyglądac w tablece?

np:

CREATE TABLE studenci(
id serial PRIMARY KEY,   
imie_nazwisko varchar(50) NOT NULL,
nr_index int4 NOT NULL
data_urodzenia date NOT NULL);

INSERT INTO studenci(imie_nazwisko..............blablabla.............,data_urodzenia) VALUES ('Don Brown','.......BLABLA...','27-10-2008');

Typ "date" odczytuje to wyrażenie jako date, bo jest tam ten myślnik? jak np: 27-(kreska)10-(kreska)2008.  Niebardzo rozumiem tą koncepcje,równie dobrze może być varchar(10)

Jak to jest z tą datą? Jaki jest poprawny zapis? Jeżeli można to proszę z praktycznym przykładem.

2

Odp: Jak dodać date?

Chyba nie bardzo wiem  co chodzi. Typ date służy do przechowywania daty. Co do formatu daty, czy beda to '-', '.' czy '/' zalezy od ustawien bazy a dokladnie ustawien opcji datestyle. Podobnie z ustawieniem czy formatu daty DD/MM/YY albo MM/DD/YY (jesli dobrze pamietam).

A jakie jest pytanie? smile

3

Odp: Jak dodać date?

Ostatnio edytowany przez tomboy (2009-02-04 02:03:06)

4

Odp: Jak dodać date?

Typ jest date, German to tylko format daty. Jak zmienisz w pliku postgresql.conf datestyle na 'German,dmy', to bedziesz mógł wpisywać date w formacie o jakim piszesz. Do zmiany format mozesz tez uzyc polecenia

SET DATESTYLE TO ...

W zasadzie podczas wpisywania nie powinien miec znaczenia separator skadowych daty (nie wazne cz wpiszesz '.' czy '-' czy moze '/').  Najwazniejsze jest format daty,tzn ktora skladowa to rok, ktoa miesiac a ktora dzien.

5

Odp: Jak dodać date?

Potestowałem sobie wyświetlenie daty:


set datesyle to 'iso,dmy'

select current_date;

wynik:

2009-02-04

Gdy dam inny format, np:.  "set datestyle to 'German, Euro'

Wynik:

04-02-2009   <-- O taki zapis mi chodzi.

OK.. rozumiem zmianę formatu typu date, ale mi chodziło głównie o zapis w komórkach(to się encjami nazywa? - INSERT INTO....). Czyli gdy zapis dam na europejski, to mogę sobie wpisać wartość daty w składni:

INSERT INTO tabela(kolumna1,kolumna2.......kulumna-data) VALUES (komórka1, komórka2....04-02-2009).

A, jak dam na iso i będzie odwrotnie, czyli "2009-02-04" , to w komórkach nie będę mógł wpisać 04-02-2009, bo taki zapis nie będzie zgodny ze zmienną typu date(z formatem jej, jak "iso", czy odwrotnie "German)?

Bo mi taknaprawdę chodzi jedynie o ten zapis w komórkach, a chciałbym dzien-miesiac-rok i tylko o tomi chodzi o zapis w komorkach, musze podac date urodzenia, a chce w formie jaką wyżej wymieniłem. Od 2 dni chce wpisać date urodzenia i tylko o tym rozmawiamy smile Dlatego rozwodze się z typem "date", bo myślałem, że musze miec konkretny format do tego typu przypisany, żebym mógł  w komórce napisać "dzien-miesiac-rok".


=============
EDIT
=============

Potestowałem sobie i juz rozumiem. Nie ważne co wpisze w INSERT INTO, on i jak zinterpretuje mi po formacie, który zadeklarowałem w zmiennej datestyle.
Raz mi wychodzi dzien/miesiac/rok (kolejnosc jest ok, ale ja chcialbym miec z separatorem "-" - myślnik), ładniej jest z myślnikiem.
Później kombinowałem z innymi, to wychodzi mi "rok-miesiac-dzien" - myślniki są, ale za to kolejność nie ta. Kombinuje, kombinuje ale nie mogę trafić na właściwy, czyli:

dzien-miesiac-rok (separator jako myslnik)

================
EDIT  - KONIEC
================

Znalazłem smile  (poszperałem w dokumentacji)

set datestyle to "postgres"    <--  "postgres" zamienia na taki format, ktory właśnie oczekuje smile Chociaż w INSERT INTO mam separator jako kropke, to oczywiście priorytet ma zmienna i zmienna zamienia mi na separator myślnikowy "-".

To chyba tyle, dziękuje za naprowadzenie smile

========

EDIT - UPDATE
==============

Mała poprawka:

set datestyle "postgres, DMY"  <-- to jest prawidłowa zadeklarowana zmienna do wyniku, który chciałem osiągnąć

Ostatnio edytowany przez tomboy (2009-02-06 15:19:48)