Jako tytuł, jak ustawić kolumnę tabeli, aby miała domyślną wartość bieżącego roku i miesiąca, w formacie "RRRRMM", na przykład 200905 na dziś?Jak ustawić datownik z domyślną wartością PostgreSQL jak "RRRRMM"?
Odpowiedz
Należy pamiętać, że format daty jest niezależny od miejsca przechowywania. Jeśli ważne jest, aby data była zapisana w tym formacie w tym formacie, musisz mieć określony niestandardowy typ danych lub zapisać go jako ciąg znaków. Następnie możesz użyć kombinacji extract, typowania i konkatenacji, aby uzyskać ten format.
Podejrzewam jednak, że chcesz zapisać datę i uzyskać format wyjściowy. Tak więc coś takiego może załatwić sprawę:
CREATE TABLE my_table
(
id serial PRIMARY KEY not null,
my_date date not null default CURRENT_DATE
);
(CURRENT_DATE is basically a synonym for now() and a cast to date).
(Edytowane w celu użycia to_char).
Następnie można uzyskać wyjście jak:
SELECT id, to_char(my_date, 'yyyymm') FROM my_table;
Teraz, jeśli zrobił naprawdę trzeba zapisać to pole jako ciąg i zapewnić formatu zawsze można zrobić:
CREATE TABLE my_other_table
(
id serial PRIMARY KEY not null,
my_date varchar(6) default to_char(CURRENT_DATE, 'yyyymm')
);
Dlaczego chcesz to zrobić?
IMHO należy zapisać datę jako typ domyślny iw razie potrzeby pobrać ją do żądanego formatu.
Można uciec z określeniem formatu kolumny, ale z widokiem. Nie znam innych metod.
Zmieniano:
Poważnie, Moim zdaniem, należy utworzyć widok na tym stole z datą typu. Mówię o czymś tak:
create table sample_table (id serial primary key, timestamp date);
i niż
create view v_example_table as select id, to_char(date, 'yyyymmmm');
I używać v_example_table w aplikacji.
Dobrze. Lepiej użyć funkcji:
CREATE OR REPLACE FUNCTION yyyymm() RETURNS text
LANGUAGE 'plpgsql' AS $$
DECLARE
retval text;
m integer;
BEGIN
retval := EXTRACT(year from current_timestamp);
m := EXTRACT(month from current_timestamp);
IF m < 10 THEN retval := retval || '0'; END IF;
RETURN retval || m;
END $$;
SELECT yyyymm();
DROP TABLE foo;
CREATE TABLE foo (
key int PRIMARY KEY,
colname text DEFAULT yyyymm()
);
INSERT INTO foo (key) VALUES (0);
SELECT * FROM FOO;
To daje mi
key | colname
-----+---------
0 | 200905
Upewnij się uruchomić createlang plpgsql
z wiersza poleceń Unix, jeśli to konieczne.
lub "twórz język plpgsql" z poziomu psql, który jest wszystkim, co robi createlang. – araqnid
Dzięki dla każdego, kto odpowiedział, a dzięki dla tych, którzy dali mi pomysł funkcja formatu , naprawdę będę się nad tym zastanawiał do przyszłego wykorzystania.
Jednak w tym konkretnym przypadku "specjalne pole yyyymm" nie jest uważane za pole daty, ale tylko jako znacznik, o cokolwiek zostanie użyte do dopasowania dokładnie zbadanej wartości z miesiąca na miesiąc; istnieje już inna dziedzina data, z pełnym znacznikiem czasu, ale jeśli muszę wszystkie wiersze stycznia 2008 roku, myślę, że jest szybszy select jak
SELECT [columns] FROM table WHERE yearmonth = '200801'
zamiast
SELECT [columns] FROM table WHERE date BETWEEN DATE('2008-01-01') AND DATE('2008-01-31')
To nic wspólnego nieporozumienie, które można denormalizować w ten sposób dla wydajności. Użyj zapytania date_trunc('month', date)
dla swoich zapytań i dodaj do tego wyrażenie indeksu, jeśli uważasz, że działa wolno.
- 1. Bash: Jak ustawić zmienną z argumentu iz domyślną wartością
- 2. ActiveAdmin - Filtr z wartością domyślną
- 3. datownik z mapowaniem postgresql stref czasowych
- 4. Jak zrobić jackson nie serializować prymitywy z wartością domyślną
- 5. Jak ustawić domyślną zakładkę z jQuery UI
- 6. Jak ustawić domyślną wersję Ruby z RVM?
- 7. Jak ustawić domyślną karnację JavaFX
- 8. jak ustawić wartość domyślną HTML.EditorFor()
- 9. interaktywne polecenia emacs z wartością domyślną
- 10. Jak zainicjować tablicę wielowymiarową z inną domyślną wartością
- 11. Domyślny datownik daty serwera SQL?
- 12. Jak łatwo ustawić zmienną na wartość false z wartością domyślną true?
- 13. Jak zmienić domyślną wartość kolumny w PostgreSQL?
- 14. Właściwość zależności z wartością domyślną Rzucanie StackOverflowException
- 15. Urządzenia Django zapisują z domyślną wartością
- 16. Schemat XML: "use =" required "" z wartością domyślną
- 17. Scala: Używanie HashMap z domyślną wartością
- 18. Kolumna logiczna w HSQLDB z wartością domyślną
- 19. PostgreSQL - ustawić wartość domyślną komórek według innej wartości komórek
- 20. Dodaj kolumnę do ramki danych z wartością domyślną
- 21. Jak ustawić domyślną sieć WIFI w mac?
- 22. Jak ustawić domyślną mapę kolorów w Matplotlib
- 23. jak ustawić domyślną wartość kątową ui-select
- 24. Jak ustawić stronę domyślną w aplikacji MVC?
- 25. Jak programowo ustawić ForeColor etykiety na domyślną?
- 26. Jak ustawić domyślną orientację w iOS Simulator
- 27. Jak ustawić wartość domyślną dla manifestPlaceholder
- 28. jak ustawić domyślną wartość czasu Savona
- 29. Jak ustawić domyślną Javę Mavena w Eclipse?
- 30. jak ustawić domyślną wartość kontrolki listy rozwijanej?
Becose potrzebuję go. Mam aplikację php, która uruchamia i wysyła zapytanie do bazy danych z tymi wartościami: "yyyymm" jako "200801", "200802" itd., Aby pobrać dane - i mówię, że posiadanie ich jako wartości domyślnej byłoby lepsze niż SELECT fiels FROM table WHERE kolumna MIĘDZY znacznikiem czasu1 I znacznikiem czasu2 – Strae
Zrobiłbym to z rozwiązaniem dodanym do mojej odpowiedzi. –