我正在使用此查询,结果不符合预期:
select max(time_taken)
from abc
where id='13'
and tdy_date='2017-10-13'
结果:
9:53
但实际结果应该是10:03。 time_taken
的数据类型为character varying
,格式为00:00。
答案 0 :(得分:2)
您应该使用数据类型作为日期时间,但是您可以使用此查询获得所需结果的时间
select max(time_taken::time) as max from abc where student_id='13' and tdy_date='2017-10-13';
答案 1 :(得分:-1)
因为time_taken列中的所有值都是00:00格式,并且只要它们是24小时表示法(即00:00到23:59),所以改变数据类型没有问题对于TIME的列,只需执行以下代码行:
ALTER TABLE abc ALTER COLUMN time_taken TIME
这样,当您选择Max time_taken时,SQL Server可以正确地确定值的优先级。所以:
SELECT MAX(LEFT(time_taken,5))
FROM abc
WHERE id='13'
AND tdy_date='2017-10-13'
现在应该给:10:03。
它会给出10:03:00.0000000,但我使用LEFT函数只选择字符串左侧的前五个字符。