2017-07-08 41 views

回答

0
select * from student where DOB > (select DOB from student where student_name='value') 

我认为DOB的数据类型是日期或以其他方式,你可以使用下列内容:

select * from student where CONVERT(VARCHAR(30),DOB,105) > (select CONVERT(VARCHAR(30),DOB,105) from student where student_name='value') 
+0

您的第一个解决方案工作。刚刚被替换>与< – Joey

-1

如果你不能将dob字段改为合理的格式,那么你将需要使用str_to_date(your_dob_field,'%d-%b-%y'),所以你会写

select * from student where str_to_date(your_dob_field,'% d-%b-%y')< str_to_date(dob_of_student_to_compare_to,'%d-%b-%y');

+0

Downvoted。一,你的答案没有根据堆栈溢出标准进行格式化。二,你假设dob字段是varchar。它可能是日期或日期时间。三,OP没有指定数据库引擎,你的答案只对mysql有效。 –

+0

其实丹我正在回答问题。如果你看看他所说的问题,数据库中的格式是19-Jan-88,它在Mysql中必须是varchar,所有其他答案都假设该字段是日期字段,它不是因为它不是原生显示格式。他要求使用这个函数,所以我已经说过用什么函数来正确比较这种格式的dob与另一个dob。 –

0

你有什么类型的日期格式为?只是因为有各种日期类型。 无论如何你可以得到一个年龄,而不是一个日期,所以它使用一个int而不是一个日期?

你可能会做出调整在SELECT语句(而不是选择*)

假设日期是YYYY-MM-DD(当然也可能是日期时间等)

WHERE date(your_field_name)>(1988-01-19)