Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部分文本字段中的SQL搜索日期范围_Sql_Date_Range_Where - Fatal编程技术网

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

部分文本字段中的SQL搜索日期范围,sql,date,range,where,Sql,Date,Range,Where,我在SQL数据库中有一个文本字段,其日期通常类似于1897年1月13日,但可能只是1962年、2013年1月或1956年等 我希望能够在年度范围内完成一项工作。从1945年到1987年 我意识到可能很难适应所有格式的数据。如果它能满足以下需求,我会很高兴: 1972年2月13日、1972年2月和1972年假设您正在使用MySQL。如果希望能够通过适当的日期比较查询表,则可能需要创建一个DATETIME类型的新字段,并用当前字段生成的DATETIMES填充该字段。您需要以下查询: UPDATE _

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

我希望能够在年度范围内完成一项工作。从1945年到1987年

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

假设您正在使用MySQL。如果希望能够通过适当的日期比较查询表,则可能需要创建一个DATETIME类型的新字段,并用当前字段生成的DATETIMES填充该字段。您需要以下查询:

UPDATE _TABLE_ set NEW_DATETIME_FIELD = STR_TO_DATE(_CURRENT_FIELD_, '%Y') where CHAR_LENGTH(_CURRENT_FIELD_) = 4;
上述查询适用于_CURRENT _field _值为'1945'的记录。您需要对当前字段中的每种类型的日期字符串运行此查询


新的DATETIME字段将允许您对其正确使用MySQL。

如果您只关心上面的日期格式,并且您只需要年份,那么您可以使用值的最后4个字符

在SQL Server中,这将是:

RIGHT(datefield,4)
或在包括SQL Server在内的大多数语言中:

SUBSTRING(datefield,LEN(datefield)-3,4)
在ANSI SQL中:

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

您正在使用哪个DBMS?MySQL不喜欢上面的子字符串。我的代码:如果!空$fromyear&!空$toyear{$query1.=和SUBSTRINGdate,LENdate-3,4介于$fromyear和$toyear之间;它表示LEN函数不存在。我使用:if!empty$fromyear&!empty$toyear{$query1.=和RIGHTdate,4介于$fromyear和$toyear之间;