我的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)
但它不起作用。
答案 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' );