declare @dt1 datetime
declare @dt2 datetime
declare @dt3 datetimeset @dt1='2011-05-13 00:00:00.000';
set @dt2='1899-12-30 16:00:00.000'; 
把dt1的日期部分减一,然后与@dt2的时间部分合并
想得到@dt3='2011-05-12 16:00:00.000’

解决方案 »

  1.   

    在提取@dt2的时间部分的时候,要求@dt2是多少就提取多少。在提取的时候很容易变成12小时制,去掉了12个小时得到4:00:00.000
      

  2.   


    declare @dt1 datetime
    declare @dt2 datetime
    declare @dt3 datetimeset @dt1='2011-05-13 00:00:00.000';
    set @dt2='1899-12-30 16:00:00.000';
    set @dt3=convert(varchar(11),@dt1-1,120)+convert(varchar(8),@dt2,108)
    select @dt3
    /*
    2011-05-12 16:00:00.000
    */
      

  3.   


    declare @dt1 datetime
    declare @dt2 datetimeset @dt1='2011-05-13 00:00:00.000'
    set @dt2='1899-12-30 16:00:00.000'select convert(datetime,convert(varchar(11),@dt1,120)+right(convert(varchar(19),@dt2,120),8))/**-----------------------
    2011-05-13 16:00:00.000