none
这样的“时间”应该怎样更新??? RRS feed

  • 问题

  • 将“MyDateTime字段”减去“1”。比如,“2008101801”表示的是“2008年10月18日01时”,现在想将“MyDateTime字段”都减去一小时。

    也就是“2008101801”变为“2008101800”,“2008101802”变为“2008101801”,2008101803”变为2008101802”,  这样的处理语句应该怎样写???


    Science and technology is my lover.

    2012年11月22日 8:30

答案

  • 转成日期, 调整之后, 再转换回你需要的格式就行了

    参考下面的示例(不过, 一般日期的存储还是使用 datetime 类型为佳, 显示的时候再去处理显示格式, 而不是在存储的时候)

    select 
    	replace(
    		replace(
    			convert(varchar(13),
    				dateadd(hour, -1, 
    					stuff(convert(varchar(10), MyDateTime), 9, 0, ' ') + ':00'
    				),
    				120
    			),
    			' ', ''
    		),
    		'-', ''
    	)
    from(
    	select MyDateTime = 2008101801 
    )data

    2012年11月22日 8:59
  • 不晓得这样的结果是不是你想要的,或许你可以参考看看。
    declare @t table (MyDateTime char(10))
    
    insert into @t values ('2008101801'),('2008101802'),('2008101803'),('2008010100')
    
    select dateadd(hour,-1,
    			dateadd(HOUR
    							,cast(right(MyDateTime,2) as tinyint)
    							,cast(left(MyDateTime,8) as datetime)
    						   )
    			)
    from @t


    以上說明若有錯誤請指教,謝謝。
    歡迎參觀我的BLOG - 積沙成塔

    2012年11月22日 12:23

全部回复

  • MyDateTime字段的数据类型是什么?

    Microsoft

    2012年11月22日 8:46
  • 转成日期, 调整之后, 再转换回你需要的格式就行了

    参考下面的示例(不过, 一般日期的存储还是使用 datetime 类型为佳, 显示的时候再去处理显示格式, 而不是在存储的时候)

    select 
    	replace(
    		replace(
    			convert(varchar(13),
    				dateadd(hour, -1, 
    					stuff(convert(varchar(10), MyDateTime), 9, 0, ' ') + ':00'
    				),
    				120
    			),
    			' ', ''
    		),
    		'-', ''
    	)
    from(
    	select MyDateTime = 2008101801 
    )data

    2012年11月22日 8:59
  • 是啊,存储的时候不用datetime类型,那么sql内置的datetime函数都不能用了


    给我写信: QQ我:点击这里给我发消息

    2012年11月22日 11:42
  • 不晓得这样的结果是不是你想要的,或许你可以参考看看。
    declare @t table (MyDateTime char(10))
    
    insert into @t values ('2008101801'),('2008101802'),('2008101803'),('2008010100')
    
    select dateadd(hour,-1,
    			dateadd(HOUR
    							,cast(right(MyDateTime,2) as tinyint)
    							,cast(left(MyDateTime,8) as datetime)
    						   )
    			)
    from @t


    以上說明若有錯誤請指教,謝謝。
    歡迎參觀我的BLOG - 積沙成塔

    2012年11月22日 12:23