sql server语言 - 如何检查(var)char是否是有效的ISO日期(112)



我有一个char(8)字段,其中should确实包含yyyymmdd日期格式的值。给定一个(假设的)表id(int)|datestring(char(8)),我希望能够做一些类似

的事情
SELECT id, isValidDate(datestring) FROM my_hypothetical_table

这对我来说很重要,这可以像查询一样运行(所以我可以,例如,SELECT * from othertable INNER JOIN hypothetical_table on hypothetical_table.id = othertable.hypothetical_FK WHERE isValidDate(hypothetical_table.datestring) = 1)。捕捉错误似乎不可行。

请注意,IsDate()函数只适用于以斜杠分隔的日期,而不适用yyyymmdd格式。

如果您不确定所有值的长度是否为8位,则可能需要添加长度检查。

DECLARE @MyTable TABLE (id INT, datestring CHAR(8))
INSERT INTO @MyTable VALUES (1, '20110711')
INSERT INTO @MyTable VALUES (2, '2011')
INSERT INTO @MyTable VALUES (3, '20110228')
INSERT INTO @MyTable VALUES (4, '20110229')
INSERT INTO @MyTable VALUES (5, '2011071')
INSERT INTO @MyTable VALUES (6, '201107')
SELECT id, datestring, ISDATE(datestring) AS IsDate FROM @MyTable

运行该命令将产生如下输出:

id          datestring IsDate
----------- ---------- -----------
1           20110711   1
2           2011       1
3           20110228   1
4           20110229   0
5           2011071    0
6           201107     1

ISDATE()也可以使用YYYYMMDD格式

SELECT ISDATE('20010101')

相关内容

  • 没有找到相关文章

最新更新