我想要一个检查约束。检查日期列,日期是否为yyyy-MM-dd
格式。
我不知道。但我只是试过,
create table #date( dob date check (dob like 'yyyy-MM-dd'))
insert #date values( '2018-09-24')
所以日期转换错误仍然存在。
更新1
注意:
@@version: Microsoft SQL Server 2012
date
列在varchar
,那么它也是受欢迎的。convert()
。但我的情况是,前端团队正在插入值为dd-MM-yyyy
。我告诉很多时候插入正确的格式为yyyy-MM-dd
(根据我们的程序)。但他们不能。所以我想根据格式限制他们的插入值。提前致谢。
Tamilppukal。
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')
试试这个以获得预期的输出。
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(data_type [(length)],表达式[,style])
DATE应被视为二进制可排序类型。
当然:使用预处理语句存储它,使用Date对象是一些编程语言。
不幸的是,在非标准格式YYYYMMDD
中插入字符串文字:
'20181231' for 2018-12-31
要再次显示为ISO标准日期,YYYY-MM-DD,请使用预定义的23。
SELECT CONVERT(VARCHAR, dob, 23) ...