tbm_timedata表中两个字段onebegintime和twoendtime,都是日期时间型。
onebegintime内容如下:
1 2008-08-01 07:23:22
2 2008-08-02 07:24:31
3 2008-08-03 07:15:05
4 2008-08-04 08:11:23
5 2008-08-05 07:17:51
6 2008-08-06 08:16:16
7 2008-08-07 08:13:51twoendtime内容如下:
1 2008-08-01 16:00:04
2 2008-08-02 16:00:09
3 2008-08-03 17:00:04
4 2008-08-04 17:00:04
5 2008-08-05 16:00:04
6 2008-08-06 17:00:05
7 2008-08-07 17:00:05
结果要求是在同一张表上onebegintime在08:00:00到08:40:00的数据显示出来,twoendtime在16:20:00到16:59:59的数据显示出来。
同时增加两列a和b,a:“08:00:00”与onebegintime的时间差(精确到分)
b:“17:00:00”与twoendtime的时间差(精确到分)
谢谢!

解决方案 »

  1.   

    onebegintime和twoendtime
    select onebegintime,twoendtime,
        a= datediff(mi,onebegintime,convert(char(10),onebegintime,108)+'08:00:00'),
        b = datediff(mi,onebegintime,convert(char(10),onebegintime,108)+'16:59:59'),
    from ta
    where left(convert(char(8),onebegintime,108),5) between '08:00' and '08:40'
      and left(convert(char(8),twoendtime,108),5) between '16:20' and '16:59'
      

  2.   

    select *,
    a=datediff(minute,cast(convert(varchar(10),onebegintime,120)+' 08:00:00' as  datetime), onebegintime),
    b=datediff(minute,cast(convert(varchar(10),twoendtime,120)+' 17:00:00' as  datetime), twoendtime)
    from tbm_timedata
    where substring(onebegintime,12,8) between '08:00:00' and '08:40:00'
     and  substring(twoendtime,12,8) between '16:20:00'and '16:59:59'
      

  3.   

    select onebegintime,twoendtime,
        a= datediff(mi,onebegintime,convert(char(10),onebegintime,108)+'08:00:00'),
        b = datediff(mi,twoendtime,convert(char(10),onebegintime,108)+'16:59:59'),
    from ta
    where left(convert(char(8),onebegintime,108),5) between '08:00' and '08:40'
      and left(convert(char(8),twoendtime,108),5) between '16:20' and '16:59'
      

  4.   

    --'xxxx--xx-xx xx:xx:xx'格式的字符串自动转化成datetime 
    --可以简化下.
    select *,
    a=datediff(minute,convert(varchar(10),onebegintime,120)+' 08:00:00' ,onebegintime),
    b=datediff(minute,convert(varchar(10),twoendtime,120)+' 17:00:00' ,twoendtime)
    from tbm_timedata
    where substring(onebegintime,12,8) between '08:00:00' and '08:40:00'
     and  substring(twoendtime,12,8) between '16:20:00'and '16:59:59'