SQL日期相同但时间不同

时间:2019-08-26 08:01:00

标签: sql sql-server

我正在收集有关表中进入或退出办公室的数据。 现在,我需要对这些数据进行报告,但是此日期和时间记录存在问题。

df1 = df.loc[df.index.repeat(6)].copy()
add = df1.groupby(level=0).cumcount()

mask = df1['diff'] < 0
df1['length'] = np.where(mask, df1['length'] - add, df1['length'] + add)
df1 = df1.reset_index(drop=True)

print (df1)
    code  tank  length  dia  diff
0    123     3     625  210 -0.38
1    123     3     624  210 -0.38
2    123     3     623  210 -0.38
3    123     3     622  210 -0.38
4    123     3     621  210 -0.38
5    123     3     620  210 -0.38
6    123     5     635  210  1.20
7    123     5     636  210  1.20
8    123     5     637  210  1.20
9    123     5     638  210  1.20
10   123     5     639  210  1.20
11   123     5     640  210  1.20

我想要这个用户(AAA)的ETIME。

xhr.upload.onprogress = function(e) {

     //console.log('s.xhr.upload > onprogress > e.target.slot', e.target.slot);

     if (e.lengthComputable) {
         var percent = Math.floor((e.loaded/e.total)*100);
         console.log('progres > > '+percent+'%');
         e.target.slot.status = 'uploading';
         e.target.slot.progress = percent;

         _slotProgressTrigger(e.target.slot, e.target.group);
      }

};

这是我的SQL。

EDATE      ENAME      ETIME      EINOUT      ESABUN
20190502   AAA        083615     IN          6112                
20190507   AAA        083255     IN          6112                   
20190507   AAA        085022     IN          6112      

4 个答案:

答案 0 :(得分:0)

您可以为此使用setAttribute("action", "/newValue")
这个想法是将除ETIME以外的所有字段上的所有行进行分组
然后您可以获取每行的最高时间值
分组将确保您没有重复的行

group by

答案 1 :(得分:0)

按您要唯一的列分组,并在时间列上使用max()以获得每个组的最高分。

SELECT EDATE, ENAME, max(ETIME) as maxTime
FROM RDCA.dbo.HISTORY
WHERE ESABUN = '6112' 
  AND EDATE LIKE '201905%' 
  AND EINOUT = 'IN'
GROUP BY EDATE, ENAME

由于您的WHERE子句,我从SELECT子句中删除了已经具有给定值的列。

答案 2 :(得分:0)

这是您的查询。在进行排序之前,您需要将时间转换为有效的datetime字段。

select * from (
select [EDATE], 
  [ENAME],
  [ETIME],
  [EINOUT],
  row_number() over (partition by 
        ESABUN order by cast(concat(left(ETIME, 2), ':', substring(ETIME, 3, 2), ':', right(ETIME, 2)) as datetime) DESC) as rn
FROM [RDCA].[dbo].[HISTORY]
WHERE ESABUN = '6112' AND  [EDATE] LIKE '201905%' AND [EINOUT] = 'IN') t1
where t1.rn = 1

答案 3 :(得分:0)

您可以在下面的代码中尝试使用以下代码,其中我使用CAST作为EDATE列的DATE。然后我只是检查了> ='2019-05-01'和<'2019-06-01'之间的日期范围,因为我猜您只在寻找当年5月的数据-

SELECT CAST(edate as date), ENAME,MAX(ETIME),EINOUT,ESABUN
FROM your_table
WHERE CAST(edate as date)  >= '2019-05-01' 
AND CAST(edate as date) <'2019-06-01'
AND ESABUN = '6112' 
AND [EINOUT] = 'IN'
GROUP BY CAST(edate as date), ENAME,EINOUT,ESABUN