SELECT * FROM TableName
WHERE
DateFild LIKE '%[1-2][0-9][0-9][0-9]-0[0-9]-0[1-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-0[0-9]-[1-2][0-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-0[0-9]-3[0-1]%' OR
DateFild LIKE '%[1-2][0-9][0-9][0-9]-1[0-2]-0[1-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-1[0-2]-[1-2][0-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-1[0-2]-3[0-9]%' Or
如果月份或天数可以为数字,则还应添加此条件
DateFild LIKE '%[1-2][0-9][0-9][0-9]-[0-9]-0[1-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-[0-9]-[1-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-[0-9]-[1-2][0-9]%' or
DateFild LIKE '%[1-2][0-9][0-9][0-9]-[0-9]-3[0-1]%'
DateFild LIKE '0[0-9]-0[1-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '0[0-9]-[1-2][0-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '0[0-9]-3[0-1]-[1-2][0-9][0-9][0-9]' OR
DateFild LIKE '1[0-2]-0[1-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '1[0-2]-[1-2][0-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '1[0-2]-3[0-1]-[1-2][0-9][0-9][0-9]' Or
DateFild LIKE '[1-9]-0[1-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '[1-9]-[1-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '[1-9]-[1-2][0-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '[1-9]-3[0-1]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '0[0-9]-[1-9]-[1-2][0-9][0-9][0-9]' or
DateFild LIKE '1[0-2]-[1-9]-[1-2][0-9][0-9][0-9]'
5条答案
按热度按时间xcitsw881#
SQL server对正则表达式的支持不是最好的,但我相信这会起作用
8yparm6h2#
PATINDEX
可以与SUBSTRING
组合使用,以获取时间戳子字符串。如果您想将其转换为带有时区的datetime类型,那么下面的Sql Snippet就可以工作了。
假设这些都在东部时间时区。
r55awzrz3#
如果记录具有固定长度,则使用左(…)和右(…)是最好的方式
bweufnob4#
sql服务器不支持regex,类似的模式是对模式的基本支持,但下面可以检查很多模式。在此查询中,所有月份都被视为31天。
如果月份或天数可以为数字,则还应添加此条件
fafcakar5#
对于2位数的月和1位数的日,需要更多的“或”子句。这就是我得到的: