проверьте ограничение для столбца даты как формат, проверьте его действительную дату во время вставки - PullRequest
0 голосов
/ 28 августа 2018

Я хочу проверить ограничение. Это проверяет столбец даты, независимо от того, находится ли дата в формате yyyy-MM-dd или нет.

Понятия не имею. Но я просто попробовал,

create table #date( dob date check (dob like 'yyyy-MM-dd'))

insert #date values( '2018-09-24')

Таким образом, ошибка преобразования даты остается.

Обновление 1

Примечание:

  1. @@version: Microsoft SQL Server 2012
  2. Если столбец date находится в varchar, то это также приветствуется.
  3. Некоторые ответы содержат convert(). Но мой сценарий состоял в том, что команды переднего плана вставляют значения как dd-MM-yyyy. Я много раз говорил, что вставьте правильный формат как yyyy-MM-dd (согласно нашей процедуре). Но они не могут. поэтому я хочу ограничить их вставку значений в соответствии с форматом.

Заранее спасибо.

TamilPugal.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

ДАТА должна рассматриваться как двоичный сортируемый тип.

Определенно: Сохраните его с подготовленным оператором , используя объект Дата - некоторый язык программирования.

Вставка строковых литералов, к сожалению, в нестандартном формате YYYYMMDD:

'20181231' for 2018-12-31

Для отображения снова в качестве стандартной даты ISO, ГГГГ-ММ-ДД, используйте предварительно установленное значение 23.

SELECT CONVERT(VARCHAR, dob, 23) ...
0 голосов
/ 28 августа 2018
create table #date( dob date check  
 (dob like '[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]'));

 insert into #date values('2018-08-20')

Попробуйте получить ожидаемый результат.

0 голосов
/ 28 августа 2018

DATE не хранится внутри как строка, поэтому вы не можете использовать ограничение CHECK.

create table #date(dob date);

'yyyy-MM-dd' - это только вопрос презентации.

Что касается вставки, вы можете использовать:

INSERT INTO tab(col) VALUES ('20180101');  -- 'YYYYMMDD' culture independent
INSERT INTO tab(col) VALUES (CONVERT(DATE, 'string', style));

CONVERT

CONVERT (data_type [(length)], выражение [, style])

...