检查格式是否为YYYY-MM-DD

时间:2016-04-22 08:16:32

标签: sql sql-server

我需要检查存储在SQL表中的格式是否为YYYY-MM-DD。

4 个答案:

答案 0 :(得分:3)

你不存储特定的格式(我认为ms sql将它存储为两个整数),你选择输出的格式。当我说你选择时,我的意思是你有你的默认设置(大多数是在安装MS SQL时自动设置的,或者根据你的国家,时区等使用的任何东西 - 你可以改变它)以及你在执行脚本时选择的那些。

答案 1 :(得分:2)

首先:如果日期值存储在datedatetime或等效的时态数据类型列中,则数据库级别中没有日期格式。日期本身由特定数据库引擎给定数据类型中定义的规则验证,并以其定义的任何二进制格式存储。

如果数据是STRING(例如,来自文件或varchar列),那么您可以使用较新版本中的TO_DATE()TRY_CONVERT()函数验证它是否为给定格式MySQL中的SQL Server和STR_TO_DATE(),或者你可以使用第三方/自编写的模块/ clrs来完成它。

这些验证仅检查字符串是否与给定格式匹配且日期部分是否在可接受的日期范围内,但它不会测试值的含义。将02/03/2005字符串转换为日期对于MM/DD/YYYYDD/MM/YYYY格式也是有效的,除非我们有关于最初存储的环境的信息,否则无法确定哪一个是真正的值它

永远不会在基于字符的列中存储时态数据(如varchar),请使用符合您需求的数据类型(DATE / DATETIME / TIMESTAMP /等等)。

答案 2 :(得分:1)

试试这种方式

SELECT CASE WHEN ISDATE(@string) = 1 
  AND @string LIKE '[1-2][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9]' 
  THEN 1 ELSE 0 END;

@string是日期。

答案 3 :(得分:0)

您可以设置格式,但据我所知,您无法检查格式。