我正在尝试验证各种组合的日期字段。在尝试验证MMDDYYYY时,该函数不会将其返回为有效。此外,它没有为MMDDYY,MMMDDYY,MMMDDYYYY提供适当的输入。
SET DATEFORMAT mdy;
IF ISDATE('11202018') = 1
PRINT 'Valida date field'
ELSE
PRINT 'INVALID';
上面示例中的日期是有效的日期字段,但仍然返回无效。我怀疑SQL服务器正在考虑本地日期设置。
有人可以分享你的想法吗?
答案 0 :(得分:1)
没有分隔符的唯一安全日期文字是'YYYYMMDD'
(风格102)
(实际上它仍然是“最安全的”,即使是'YYYY-MM-DD'
字面量也会被法语设置弄乱。请参阅下面的参考文献
如果不操纵字符串插入分隔符,您将无法ISDATE()
识别'MMDDYYYY'
。
https://docs.docker.com/engine/admin/multi-service_container/
答案 1 :(得分:0)
在使用ISDATE函数之前,您需要先添加分隔符
DECLARE @DATE nvarchar(100) = '11202018'
IF ISDATE(SELECT(STUFF(STUFF(@DATE,3,0,'-'),6,0,'-')))
PRINT 'Valida date field'
ELSE
PRINT 'INVALID';
答案 2 :(得分:0)
SQL Server基于DATEFORMAT工作, 在去检查之前应该分开由" /"提交的日期。或" - "
参考查询,它将同时适用于" MMM / DD / YYYY"和" mm / dd / yy"
temp