Mar*_*ijn 0 t-sql sql-server datetime
我有一个char(8)字段,它should确实包含yyyymmdd dateformat中的值.鉴于(假设的)表格,id(int)|datestring(char(8))我希望能够做类似的事情
SELECT id, isValidDate(datestring) FROM my_hypothetical_table
Run Code Online (Sandbox Code Playgroud)
对我来说这很重要,因为它可以像查询一样运行(例如,我可以SELECT * from othertable INNER JOIN hypothetical_table on hypothetical_table.id = othertable.hypothetical_FK WHERE isValidDate(hypothetical_table.datestring) = 1).捕获错误似乎不可行.
请注意,IsDate()函数仅适用于斜杠分隔日期,而不适用于yyyymmdd格式.
小智 5
如果您不确定所有值的长度是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
Run Code Online (Sandbox Code Playgroud)
运行它会产生输出:
id datestring IsDate
----------- ---------- -----------
1 20110711 1
2 2011 1
3 20110228 1
4 20110229 0
5 2011071 0
6 201107 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |