sql日期时间验证

时间:2017-12-21 04:47:58

标签: sql sql-server

我有一个数据类型为nvarchar的列,该列包含数据,即

2017-12,
2017-28,
2017-00,
0000,
0000-22

等。

因此,在列中我有无效数据,即2017-0000000000-22,所以我希望列输出应该是有效数据,即2017-12,{{1等等'。 并在连接条件和案例陈述中使用该列。

1 个答案:

答案 0 :(得分:0)

使用此查询

我在这里做以下事情。 1.首先从你的价值观中删除 - 2.由于您说2017-12,2017-28是有效数据,表示年份后跟日期。 所以他们应该在2017-1至2017-31之间,即20171和207131,当短划线被删除。

下面的查询首先删除您的列的短划线,然后获取20171和201731之间的值。在查询年份中没有硬编码,所以它适用于明年也像2018年。

Select * from yourtable where REPLACE(yourcolumn, '-', '') 
between (year(getdate())+'1') AND (year(getdate())+'31')