读书人

这么的“时间”应该怎样更新?

发布时间: 2012-12-17 09:31:40 作者: rapoo

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



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

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

IF OBJECT_ID('test1') IS NOT NULL 
DROP TABLE test1 ;
CREATE TABLE test1
(
ID INT,
MyDateTime NVARCHAR(22)
)

INSERT INTO test1
SELECT 1,'2008101800'
UNION
SELECT 2,'2008101801'
UNION
SELECT 3,'2008101802'
UNION
SELECT 4,'2008101803'

IF NOT OBJECT_ID('#a') IS NOT NULL
DROP TABLE #a
SELECT ID ,
MyDateTime ,
DATEADD(HOUR
, CONVERT(INT, RIGHT(MyDateTime, 2)),CONVERT(DATETIME, LEFT(MyDateTime, 8))
) AS 'datetime' ,
CONVERT(NVARCHAR(30)
, DATEADD(HOUR, -1,DATEADD(HOUR,CONVERT(INT, RIGHT(MyDateTime, 2)),CONVERT(DATETIME, LEFT(MyDateTime,8))))
, 20) AS 'reduce'
INTO #a
FROM test1

SELECT * FROM #a

SELECT ID,
MyDateTime,
LEFT(REPLACE(REPLACE(reduce,'-',''),' ',''),10)
FROM #a

[其他解释]
update TB set MyDateTime=LEFT(MyDateTime,len(MyDateTime)-2)+right('00'+cast(cast(RIGHT(MyDateTime,2) as int)-1 as varchar(2)),2)
[其他解释]
update table set MyDateTime = cast(cast(mydatetime as int) - 1 as varchar(20))
[其他解释]
update table
set mydatetime=cast(cast(mydatetime)as int)-1 as varchar(20))
go
[其他解释]
Case when...
[其他解释]
谢谢各位大师。

读书人网 >SQL Server

热点推荐