SQL MAX日期不会解密秒

时间:2016-10-11 20:47:28

标签: sql-server max

我有一个包含以下数据的表:

ID    | ObjectID     |  ActionDate
=======================================
12345 | 422107       | 2016-10-05 11:24:23.790
12346 | 422107       | 2016-10-05 11:24:28.797

我想返回ID和最大日期,但MAX函数似乎没有计算到秒值(SS)。我错过了什么,或者这是MAX功能的限制吗?这是我正在使用的代码:

SELECT  
    TMOA.ObjectID           AS [ObjID]
    , TMOA.ID               AS [ObjActionID]
    , MAX(TMOA.ActionDate)  AS [PrepDate]
FROM    
    TM_Procedure            AS TMPRD
    left join TM_ObjectAction       AS TMOA     ON TMPRD.ID = TMOA.ObjectID
GROUP BY    
    TMOA.ObjectID
    , TMPRD.ID
    , TMOA.ID

2 个答案:

答案 0 :(得分:0)

一个选项是使用窗口函数Row_Number()

stephen at greed in ~/code 
$ gcc -g -c set.c -O3         

stephen at greed in ~/code 
$ objdump -d -M intel -S set.o

set.o:     file format elf64-x86-64


Disassembly of section .text.startup:

0000000000000000 <main>:
#include<stdio.h>
int main(int argc, char *argv)
{
  unsigned long x = 0;
  x |= (1UL << argc);
   0:   89 f9                   mov    ecx,edi
   2:   be 01 00 00 00          mov    esi,0x1
   7:   48 83 ec 08             sub    rsp,0x8
   b:   48 d3 e6                shl    rsi,cl
   e:   bf 00 00 00 00          mov    edi,0x0
  13:   31 c0                   xor    eax,eax
  15:   e8 00 00 00 00          call   1a <main+0x1a>
{
  1a:   31 c0                   xor    eax,eax
  x |= (1UL << argc);
  1c:   48 83 c4 08             add    rsp,0x8
  printf("x=%x\n", x);
  20:   c3                      ret 

答案 1 :(得分:0)

看起来您正在按表格UNIQUE进行分组。很可能这就是为什么你得到一个你不想要的记录。只需选择MAX(ActionDate),看看你得到了什么。

如果您获得了所需的记录,那么您必须弄清楚您选择/分组的列是否会导致您不想要的记录。我的猜测是TMOA.ObjectIDTMOA.ID