Substring返回一个数字值而不是varchar

时间:2012-07-07 09:44:38

标签: mysql

$query = mysql_query(SELECT * FROM test WHERE SUBSTRING(date,0,4)="1392") //for example 1392
echo query['name'];

我想得到4个第一个字符,并检查它与1392是否相等。  但它返回1054我的列名类型是varchar,我不知道这个。

3 个答案:

答案 0 :(得分:2)

MySQL从1开始计算char,而不是从0开始计算php。 尝试

SUBSTRING(date,1,4)="1392"

或者如果你想要年份

YEAR(date)="1392"

http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring

编辑测试示例

CREATE TABLE babak (name VARCHAR(20) NOT NULL, date VARCHAR(10) NOT NULL);
INSERT INTO babak SELECT 'test', '1391/11/11';
INSERT INTO babak SELECT 'correct', '1932/11/11';

SELECT * FROM babak WHERE YEAR(date) = 1932;
+---------+------------+
| name    | date       |
+---------+------------+
| correct | 1932/11/11 |
+---------+------------+

SELECT * FROM babak WHERE SUBSTRING(date, 1, 4) = 1932;
+---------+------------+
| name    | date       |
+---------+------------+
| correct | 1932/11/11 |
+---------+------------+

答案 1 :(得分:1)

因此,您的日期位于varchar,格式为yyyy/MM/dd,请尝试以下方式:

SELECT   *
  FROM   test 
 WHERE   SUBSTRING(`date`,1,4) = '1932'

<强> CLICK HERE FOR DEMO

答案 2 :(得分:0)

mysql_query只返回一个资源,你需要使用该资源来获取结果

$resource = mysql_query('SELECT * FROM test WHERE SUBSTRING(date,1,4)="1392"')
$result = mysql_fetch_assoc($resource);
echo $result['name'];