检查日期列的约束作为格式明智检查其在插入期间的有效日期

check constraint for date column as format wise check its an valid date during the insertion

我想要一个检查约束。检查日期列,日期是否为 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.

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 ) ] , expression [ , style ] )

DATE 应被视为二进制可排序类型。

肯定:prepared statement存储,用Date对象是某种编程语言。

不幸的是,字符串文字的插入采用非标准格式 YYYYMMDD:

'20181231' for 2018-12-31

要再次显示为 ISO 标准日期 YYYY-MM-DD,请使用预定义的 23。

SELECT CONVERT(VARCHAR, dob, 23) ...
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')

试试这个以获得预期的输出。