简体   繁体   English

在SQL Server中验证日期格式dd-mmm-yyyy和dd mmm yyyy

[英]Validating date format dd-mmm-yyyy and dd mmm yyyy in SQL Server

I need to validate two date formats: DD-MMM-YYYY and DD MMM YYYY . 我需要验证两种日期格式: DD-MMM-YYYYDD MMM YYYY

Here is the code I use to validate DD-MMM-YYYY 这是我用来验证DD-MMM-YYYY的代码

CASE 
   WHEN (date_column != ' ' 
         AND (ISDATE(date_column) = 0
              OR (ISDATE(date_column) = 1
              AND (CHARINDEX('-', date_column, 0) <> 3 
               OR (CHARINDEX('-', date_column, 4) <>7
               OR (LEN(date_column) <> 11))) 
      THEN 1
      ELSE 0  
END)

Here is the code I use to validate DD MMM YYYY: 这是我用来验证DD MMM YYYY的代码:

 CASE WHEN ( date_column !=' ' 
       AND ( ISDATE(date_column )=0
           OR ( ISDATE(date_column )=1
               AND ( CHARINDEX(' ',date_column ,0) <>3 
               OR  ( CHARINDEX(' ',date_column ,4) <>7
               OR  (LEN(date_column) <>11
               )
             )
         ) THEN 1
         ELSE 0  END)

Can these be combined to populate at a same time instead of two blocks of code? 是否可以将它们组合在一起以同时填充而不是两个代码块?

CONVERT the datetime into the format that you want. 将日期时间转换为所需的格式。

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql https://docs.microsoft.com/zh-cn/sql/t-sql/functions/cast-and-convert-transact-sql

Example query: SELECT GETDATE(), CONVERT(varchar(10), GETDATE(), 120) Example output: 2018-02-06 14:02:50.900 2018-02-06 查询示例:SELECT GETDATE(),CONVERT(varchar(10),GETDATE(),120)示例输出:2018-02-06 14:02:50.900 2018-02-06

try_parse returns NULL when it is not a valid date. 如果不是有效日期,try_parse将返回NULL。 German Culture 'de-de' knows the formats 'dd-mm-yyyy' or 'dd mm yyyy' 德国文化“ de-de”知道格式“ dd-mm-yyyy”或“ dd mm yyyy”

CASE WHEN TRY_PARSE(date_column AS DATE USING 'de-de') IS NOT NULL 
     THEN 1 
     ELSE 0 
END

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM