繁体   English   中英

MAX 函数返回意外结果

[英]MAX function returning unexpected result

我正在使用此查询,但结果与预期不符:

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。

您应该使用数据类型作为日期时间,但在这段时间内您可以使用此查询获得所需的结果

select max(time_taken::time) as max from abc where student_id='13' and tdy_date='2017-10-13';

因为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 函数只选择字符串左侧的前五个字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM