我使用SQL Server 2008的 我在數據庫 其中值是只更新日期時間
10/4/2012 8:03:00 AM
如何更新只有日期部分的日期時間?
字段名稱是dTime。
我想將日期更新至2012年5月10日,並保持原樣。
我使用SQL Server 2008的 我在數據庫 其中值是只更新日期時間
10/4/2012 8:03:00 AM
如何更新只有日期部分的日期時間?
字段名稱是dTime。
我想將日期更新至2012年5月10日,並保持原樣。
CREATE TABLE dbo.MyTable(
ID INT IDENTITY(1,1) PRIMARY KEY,
DTColumn DATETIME NOT NULL
);
GO
INSERT dbo.MyTable(DTColumn) VALUES
('20120410 08:03:00.000'),
('20010101 01:01:01.000');
BEGIN TRANSACTION;
UPDATE dbo.MyTable
-- Style 126/ISO8601 = yyyy-mm-ddThh:mi:ss.mmm
SET DTColumn = STUFF(CONVERT(VARCHAR(50),DTColumn,126) ,1, 10, '2012-05-10')
-- Uncomment this line to see the old and new values
-- OUTPUT deleted.DTColumn AS OldValue, inserted.DTColumn AS NewValue
WHERE CONVERT(DATE,DTColumn)='2012-04-10'
SELECT * FROM dbo.MyTable;
ROLLBACK;
-- COMMIT
結果:
OldValue NewValue
----------------------- -----------------------
2012-04-10 08:03:00.000 2012-05-10 08:03:00.000
ID DTColumn
----------- -----------------------
1 2012-05-10 08:03:00.000
2 2001-01-01 01:01:01.000
很好地使用插入和刪除的表格。 – gicalle
UPDATE YourTable
SET YourColumn = DATEADD(MONTH,1,YourColumn)
WHERE YourColumn = '20120410 08:03:00'
我假設你的日期格式爲DD/MM/YYYY
。如果是MM/DD/YYYY
,則應改用DATEADD(DAY,1,YourColumn)
。
UPDATE
tableX
SET
columnX = DATEADD(day, DATEDIFF(day, columnX, '20120510'), columnX)
WHERE
(conditionX) ;
這絕對是最有效的解決方案。 –
UPDATE table1
SET columnDatetime = '10/5/2012' + ' ' + CONVERT(varchar(12), CONVERT(time, columnDatetime))
WHERE CONVERT(date, columnDatetime) = '10/4/2012'
只需使用VARCHAR和修改在它想要的東西沒有接觸的時間。 在這個例子中,我使用CONVERT(varchar(12),columnDatetime)來獲取長度爲12個字符的字符串,假設時間格式爲例如「20:10:15.250」。
你想要做什麼類型的更新? –