Во-первых, использование цвета и значков должно помочь пользователю визуально осознать серьезность проблемы: красный - для исключения, желтый - для предупреждения и белый - для информации.
Во-вторых, использование глаголов на кнопках диалогового окна дает пользователям представление о том, что они говорят системе, даже если они не читают текст диалога.
И наконец, если вы заинтересованы в изучении совершенно другой парадигмы уведомлений, ознакомьтесь с информационной панелью или панелью уведомлений, реализованной в Firefox и Internet Explorer. StackOverflow использует механизм того же типа для уведомления пользователей, когда они получают новый значок.
Информационная панель не навязчива и остается в верхней части экрана, ожидая внимания пользователя. Я думаю, что это отличная метафора дизайна.
Вот несколько учебных пособий по реализации:
Здесь Это руководство Microsoft по дизайну диалогов , оно также касается концепции информационной панели.
Помните, что форматирование даты не зависит от хранилища. Если для вас важно, чтобы дата хранилась в этом формате, вам нужно будет либо определить собственный тип данных, либо сохранить его в виде строки. Затем вы можете использовать комбинацию 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')
);
На случай, если Милен А. Радев не успеет опубликовать свое решение, вот оно:
CREATE TABLE foo (
key int PRIMARY KEY,
foo text NOT NULL DEFAULT TO_CHAR(CURRENT_TIMESTAMP,'YYYYMM')
);
Зачем вам это нужно?
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 в своем приложении.
Спасибо всем, кто ответил, и спасибо тем, кто дал мне идею функционального формата, я действительно изучу его для будущего использования.
Но в этом явном случае «специальное поле ггггмм» не должно рассматриваться как поле даты, а просто как тег, или что бы ни использовалось для сопоставления точно исследованного значения год-месяц ; уже есть другое поле даты с полной меткой времени, но если мне нужны все строки за январь 2008, я думаю, что это быстрее, чем выбрать
SELECT [columns] FROM table WHERE yearmonth = '200801'
вместо
SELECT [columns] FROM table WHERE date BETWEEN DATE('2008-01-01') AND DATE('2008-01-31')