Php 获取varchar数据类型的上一年
我有一个问题Php 获取varchar数据类型的上一年,php,sql,postgresql,Php,Sql,Postgresql,我有一个问题 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不是整数。我怎样才能拿到上一学年的$U?或者可能吗?
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不是整数。我怎样才能拿到上一学年的$U?或者可能吗?这里有一种方法可以获得前面的值:
select *
from table1
where sy < '$school_year'
order by sy desc
limit 1;
选择*
来自表1
sy在哪里<$school\u year'
按sy desc订购
限值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';
$q
将
SELECT * FROM table1 WHERE sy='2012-2013'
考虑重组你的桌子。您可能的选项(而不是格式化的varchar
)是:
- 使用起始(或结束)年份作为
int
(最简单,最不容易出错)
- 使用一个可用的,可能是
int4range
(或)和(9.2+)
- ,具有您自己的表示格式,并适用于它们
如果你有数据库设计的控制,考虑改变这个字段只包含学期的开始或结束的一年。生活就变得容易多了,不仅仅是这个问题。我同意乔纳森所说的。。重新构造您的表会更好,并且更容易对未来进行查询。尝试将字符串拆分为两列,并在需要时对其进行concat:)id,从年到年,2013年,2014年,从年到年(“-”,从年到年)
SELECT * FROM table1 WHERE sy='2012-2013'