我在 SQL 数据库中有一个文本字段,其日期通常类似于 1897 年 1 月 13 日,但可能只是 1962 年或 2013 年 1 月或 1956 年等。
我希望能够在年份范围内进行 WHERE。例如。从 1945 年到 1987 年。
我意识到可能很难满足所有格式的数据。如果它只满足以下条件,我会很高兴:1972 年 2 月 13 日、1972 年 2 月和 1972 年
如果您关心的唯一日期格式与上面的格式类似,并且您只想要年份,那么看起来您可以只使用该值的最后 4 个字符。
在 SQL Server 中,这将是:
RIGHT(datefield,4)
或者在大多数语言中(包括 SQL Server):
SUBSTRING(datefield,LEN(datefield)-3,4)
在 ANSI SQL 中:
MID(datefield,LEN(datefield)-3,4)
鉴于您使用的是 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日期函数。