Как установить метку даты значения по умолчанию Postgresql как 'YYYYMM'?

Во-первых, использование цвета и значков должно помочь пользователю визуально осознать серьезность проблемы: красный - для исключения, желтый - для предупреждения и белый - для информации.

Во-вторых, использование глаголов на кнопках диалогового окна дает пользователям представление о том, что они говорят системе, даже если они не читают текст диалога.

И наконец, если вы заинтересованы в изучении совершенно другой парадигмы уведомлений, ознакомьтесь с информационной панелью или панелью уведомлений, реализованной в Firefox и Internet Explorer. StackOverflow использует механизм того же типа для уведомления пользователей, когда они получают новый значок.

Информационная панель не навязчива и остается в верхней части экрана, ожидая внимания пользователя. Я думаю, что это отличная метафора дизайна.

Вот несколько учебных пособий по реализации:

Здесь Это руководство Microsoft по дизайну диалогов , оно также касается концепции информационной панели.

38
задан Milen A. Radev 26 May 2009 в 14:01
поделиться

5 ответов

Помните, что форматирование даты не зависит от хранилища. Если для вас важно, чтобы дата хранилась в этом формате, вам нужно будет либо определить собственный тип данных, либо сохранить его в виде строки. Затем вы можете использовать комбинацию extract , приведения типов и конкатенации, чтобы получить этот формат.

Однако я подозреваю, что вы хотите сохранить дату и получить формат на выходе. Итак, что-то вроде этого поможет вам:

    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).

(Отредактировано для использования to_char).

Затем вы можете получить результат, например:

SELECT id, to_char(my_date, 'yyyymm') FROM my_table;

Теперь, если вам действительно нужно было сохраните это поле как строку и убедитесь, что вы всегда можете использовать формат:

CREATE TABLE my_other_table
(
id serial PRIMARY KEY not null,
my_date varchar(6) default to_char(CURRENT_DATE, 'yyyymm')
);
79
ответ дан 27 November 2019 в 03:13
поделиться

На случай, если Милен А. Радев не успеет опубликовать свое решение, вот оно:

CREATE TABLE foo (
    key     int PRIMARY KEY,
    foo     text NOT NULL DEFAULT TO_CHAR(CURRENT_TIMESTAMP,'YYYYMM')
);
15
ответ дан 27 November 2019 в 03:13
поделиться

Зачем вам это нужно?

IMHO, вы должны сохранить дату как тип по умолчанию и, если необходимо, получить ее, преобразовав ее в желаемый формат.

Вы можете обойтись указанием формата столбца, но с представлением. Я не знаю других методов.

Отредактировано:

Серьезно, на мой взгляд, вы должны создать представление для этой таблицы с типом даты. Я говорю о чем-то вроде этого:

create table sample_table ( id serial primary key, timestamp date); 

и, чем

create view v_example_table as select id, to_char(date, 'yyyymmmm');

И используйте v_example_table в своем приложении.

9
ответ дан 27 November 2019 в 03:13
поделиться

Спасибо всем, кто ответил, и спасибо тем, кто дал мне идею функционального формата, я действительно изучу его для будущего использования.

Но в этом явном случае «специальное поле ггггмм» не должно рассматриваться как поле даты, а просто как тег, или что бы ни использовалось для сопоставления точно исследованного значения год-месяц ; уже есть другое поле даты с полной меткой времени, но если мне нужны все строки за январь 2008, я думаю, что это быстрее, чем выбрать

SELECT  [columns] FROM table WHERE yearmonth = '200801'

вместо

SELECT  [columns] FROM table WHERE date BETWEEN DATE('2008-01-01') AND DATE('2008-01-31')
1
ответ дан 27 November 2019 в 03:13
поделиться

Верно. Лучше использовать функцию:

-2
ответ дан 27 November 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: