0

我想要一个检查约束。这将检查日期列,日期是否为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(按照我们的程序)。但他们不能。所以我想根据格式限制它们的插入值。

提前致谢。

泰米尔语。

4

3 回答 3

1

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

转变

转换(数据类型 [(长度)],表达式 [,样式])

于 2018-08-28T15:32:08.363 回答
1
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')

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

于 2018-08-28T15:56:52.657 回答
0

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

绝对:用准备好的语句存储它,使用Date对象是某种编程语言。

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

'20181231' for 2018-12-31

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

SELECT CONVERT(VARCHAR, dob, 23) ...
于 2018-08-28T15:40:36.100 回答