如何将MMDDYYYY格式的日期作为sql server中的有效日期值返回?

时间:2017-11-17 04:33:08

标签: sql sql-server sql-server-2008 sql-server-2005

我正在尝试验证各种组合的日期字段。在尝试验证MMDDYYYY时,该函数不会将其返回为有效。此外,它没有为MMDDYY,MMMDDYY,MMMDDYYYY提供适当的输入。

SET DATEFORMAT mdy;

IF ISDATE('11202018') = 1  
    PRINT 'Valida date field' 
ELSE  
    PRINT 'INVALID';

上面示例中的日期是有效的日期字段,但仍然返回无效。我怀疑SQL服务器正在考虑本地日期设置。

有人可以分享你的想法吗?

3 个答案:

答案 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