我使用以下方法从java中的dob和当前日期计算年龄,dob存储在数据库表中,使用getter-setter方法导出dob值并将dob传递给getAge1方法,在方法中查询在php-myadmin-mysql控制台中运行良好,当我将查询结果存储在resultset中时,它在int age变量中给出null值。
public int getAge1(int id,String dob)
{
try {
System.out.println("DOB is:"+dob);
System.out.println("Id is:"+id);
Connection conn = null;
conn = DbConnection.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
String s3 = "SELECT TIMESTAMPDIFF(YEAR,"+ dob +",CURDATE()) from custregister where cid="+ id ;
System.out.println("sql :"+s3);
ps = conn.prepareStatement(s3);
rs = ps.executeQuery();
while (rs.next())
{
int s2 =rs.getInt(1);
System.out.println("Age is "+s2);
age=s2;
}
}catch(Exception e){e.printStackTrace();}
//SELECT TIMESTAMPDIFF(YEAR, 'dob', CURDATE()) AS age;
return age;
}
在传递到SELECT语句的日期值周围添加单个引号。
试试这个:
SELECT
TIMESTAMPDIFF(YEAR, dob, CURDATE())AS AGE
from custregister
where cid= your id ;
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
更新:1
String s3 = "SELECT TIMESTAMPDIFF(YEAR,"+ dob +",CURDATE()) from custregister where cid='+id'" ;