2014-05-06 131 views
0

我有一个查询得到一个VARCHAR数据类型

SELECT * from table1 where sy='$school_year'; 

与上年我

$school_year='2013-2014'  //which is a varchar 

我怎样才能让

$school_year='2012-2013' 

我已经试过

SELECT * from table1 where sy='$school_year'-1; 

但给我一个错误,指出$ school_year不是一个整数。我怎样才能得到以前的$ school_year?或者有可能吗?

+0

如果您拥有数据库设计的控制权,请考虑将此字段更改为仅包含学期的开始或结束年份。生活变得更容易,而不仅仅是这个特定的问题。 –

+0

我同意乔纳森所说的..重组你的表格会更好,并且更容易做到未来的查询。尝试将字符串拆分为两列,并在需要时将其连接。:) id,from_year,to_year 1,2013,2014 CONCAT_WS(' - ',from_year,to_year) –

回答

1

或者,你可以这样做:看看这个例子:

$school_year='2013-2014'; 
$school_year = explode('-', $school_year); 
$school_year[0] = ((int) $school_year[0] - 1); 
$school_year[1] = ((int) $school_year[1] - 1); 
$school_year = implode('-', $school_year); 

$statement = "SELECT * from table1 where sy='$school_year';"; 
echo $statement; 

// Sample 
// SELECT * from table1 where sy='2012-2013'; 
0

这是一个方式来获得前次值:

select * 
from table1 
where sy < '$school_year' 
order by sy desc 
limit 1; 
0
$year = '2013-2014'; 

$prev_year = substr($year, 0, 4); 
$prev_year = ($prev_year-1) . '-' . $prev_year; 

$q = "SELECT * FROM table1 WHERE sy='$prev_year'"; 

$q

SELECT * FROM table1 WHERE sy='2012-2013' 
相关问题