我在SQL数据库中有一个文本字段,其日期通常类似于1897年1月13日,但可能只是1962年或2013年1月或1956年等。
我希望能够在年份范围内进行WHERE。例如。从1945年到1987年。
我意识到可能很难满足所有数据格式。如果它能满足以下条件,我会很高兴: 1972年2月13日,1972年2月和1972年
答案 0 :(得分:0)
鉴于您使用的是MySQL。如果您希望能够使用正确的日期比较查询表格,则可能需要创建具有DATETIME类型的新字段,并使用当前字段生成的DATETIMES填充该字段。您需要以下查询:
UPDATE _TABLE_ set NEW_DATETIME_FIELD = STR_TO_DATE(_CURRENT_FIELD_, '%Y') where CHAR_LENGTH(_CURRENT_FIELD_) = 4;
上述查询适用于_CURRENT_FILED_中值为'1945'的记录。您需要为当前字段中的每种日期字符串运行此查询。
新的DATETIME字段将允许您正确使用MySQL date functions。
答案 1 :(得分:0)
如果您关注的唯一日期格式与上述格式类似,并且您只需要年份,则看起来您可以使用该值的最后4个字符。
在SQL Server中:
RIGHT(datefield,4)
或者在大多数语言(包括SQL Server)中:
SUBSTRING(datefield,LEN(datefield)-3,4)
在ANSI SQL中:
MID(datefield,LEN(datefield)-3,4)