2013-07-03 82 views
3

我們正在創建一個演示數據庫。所以他們需要我將具有所有日期的列更改爲特定日期。替換日期的某個部分

只替換月份和日期,並保持年份不變。

例:03/12/2012,1990年6月19日

解決方案:01/01/2012,01/01/1990

他們想讓月份和日期:01/01

我的查詢是mentione如下:

update Tablename set column = REPLACE(column, select substring(column,1,5) from Tablename ,'01/01') ; 

,但我得到一個錯誤mentione如下:

Msg 156, Level 15, State 1, Line 1 
Incorrect syntax near the keyword 'select'. 
Msg 102, Level 15, State 1, Line 1 
Incorrect syntax near '01/01'. 

任何幫助/意見,將不勝感激。

+0

你的日期的列定義是什麼樣的? –

+1

如果你的日期被保存爲DateTime,你不能僅僅在沒有轉換的情況下對它進行字符串操作。 – Learner

+0

這只是日期..我打算將它轉換成一個字符串,然後執行替換 – user2471553

回答

0

只需刪除錯誤select

update Tablename 
set column = REPLACE(column, substring(column,1,5) from Tablename ,'01/01'); 

然而,這似乎是一個更合適的方法將使用DATEPART功能:

UPDATE Tablename 
SET column = CAST('01/01/' + CAST(DATEPART(year, column) AS VARCHAR) AS DATETIME) 
0

首先,你需要將時間值轉換爲VARCHAR如果你想對其執行字符串操作。其次,你不需要尋找SUBSTRING。只需使用DateTime格式更新DateTime列即可。

UPDATE TABLE SET ColumnName = CAST('Whatever Date You Want' AS DATETIME) 
2

不要更改字符串操作的日期。它保證在事情發展的道路上走下坡路,而且速度較慢。

UPDATE TableName 
SET [column] = DATEADD(year,DATEDIFF(year,0,[column]),0)