如何将MySQL字段拆分为两个并比较两个字段之间的字符串?

时间:2014-08-15 05:35:38

标签: mysql sql

我的MySQL表financial_year中有一个字段,其中包含如下所示的值

01-04-2010-31-03-2011
01-04-2011-31-03-2012
01-04-2013-31-03-2014

我假设有一个日期03-05-2011

并希望获得此日期所在的财政年度。

我尝试使用

SELECT financial_year 
FROM financial_years 
WHERE '03-05-2011' IS BETWEEN SPLIT("-", financial_year)

但它不起作用。

2 个答案:

答案 0 :(得分:4)

使用 LEFT() RIGHT(),因为您的值的长度是固定的,并使用 STR_TO_DATE()将您的字符串转换为日期。这是一个例子:

SELECT financial_year
FROM financial_years
WHERE STR_TO_DATE('03-05-2011','%d-%m-%Y') >= DATE( LEFT(financial_year,10) )
AND STR_TO_DATE('03-05-2011','%d-%m-%Y') <= DATE( RIGHT(financial_year,10) );

如果financial_year的数据类型为 VARCHAR(),您应该使用 STR_TO_DATE(),就像这个

STR_TO_DATE(LEFT(financial_year,10),'%d-%m-%Y') 

STR_TO_DATE(RIGHT(financial_year,10),'%d-%m-%Y')

答案 1 :(得分:0)

以下代码确实有效

SELECT financial_year
FROM financial_years
WHERE STR_TO_DATE('03-01-2012','%d-%m-%Y') >= STR_TO_DATE( LEFT(financial_year,10),'%d-%m-%Y' )
AND STR_TO_DATE('03-01-2012','%d-%m-%Y') <= STR_TO_DATE( RIGHT(financial_year,10),'%d-%m-%Y' );