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

我想得到4個第一個字符並檢查它是否與1392相等。 但它的返回值1054我的列名稱類型是varchar,我不知道這一點。子串重新生成一個數值而不是varchar

回答

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 | 
+---------+------------+ 
+0

再次同樣的問題,它返回一個數字 – 2012-07-07 09:48:33

+0

是什麼日期?如果你想獲取年份只是使用年(日期) – 2012-07-07 09:49:40

+0

日期是波斯語類型像1391/11/11考試我想得到4frist字符,如果相等,然後我回聲uname – 2012-07-07 09:51:34

0

的mysql_query只返回一個資源,你需要使用資源到fetc小時結果

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

我知道這是我的朋友它是測試謝謝你的幫助我的問題解決tanx很多 – 2012-07-07 10:03:35

+0

只是增加了一些人通過谷歌找到這個問題,然後他們有答案 – 2012-07-07 10:09:09

1

所以你的日期是在varchar與格式yyyy/MM/dd,試試這個:

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

CLICK HERE FOR DEMO

相關問題