SQL搜索日期范围在文本字段的一部分

时间:2013-09-20 12:02:27

标签: sql date range where

我在SQL数据库中有一个文本字段,其日期通常类似于1897年1月13日,但可能只是1962年或2013年1月或1956年等。

我希望能够在年份范围内进行WHERE。例如。从1945年到1987年。

我意识到可能很难满足所有数据格式。如果它能满足以下条件,我会很高兴: 1972年2月13日,1972年2月和1972年

2 个答案:

答案 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)
相关问题