1

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

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

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

4

2 回答 2

0

如果您关心的唯一日期格式与上面的格式类似,并且您只想要年份,那么看起来您可以只使用该值的最后 4 个字符。

在 SQL Server 中,这将是:

RIGHT(datefield,4)

或者在大多数语言中(包括 SQL Server):

SUBSTRING(datefield,LEN(datefield)-3,4)

在 ANSI SQL 中:

MID(datefield,LEN(datefield)-3,4)
于 2013-09-20T13:06:46.260 回答
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日期函数

于 2013-09-20T12:13:11.570 回答