2011-09-29 57 views

回答

2

timestamp功能添加您的時間戳字段,進行初始化,然後,一旦你感到安全,防摔舊的專欄。事情是這樣的:

alter table your_table add timestamp_column timestamp; 
update your_table set timestamp_column = timestamp(date_column, time_column); 
-- Pause and make sure everything is okay. 
-- Take your time, the database will wait. 
alter table your_table drop column date_column; 
alter table your_table drop column time_column; 
alter table your_table modify timestamp_column timestamp not null; 
+0

像魅力一樣工作謝謝 –

2

通過「合併」,你的意思是「添加」?這聽起來像是你在不同的領域得到了日期和時間,所以把它們放在一起與添加它們是一回事。

如果是這樣的話,你可以使用MySQL的ADDTIME()功能:

mysql> SELECT ADDTIME(aDate, aTime) FROM aTable; 

如果你的意思是將它們連接起來,那麼MySQL有一個CONCAT()函數...但它似乎並不適合你的目的。

--edited--

如果它是你後另一列,這是一個兩步的過程:

-- Add the column 
mysql> ALTER TABLE aTable ADD COLUMN aDateTime DateTime DEFAULT NULL; 
-- Insert the data 
mysql> UPDATE aTable SET aDateTime = ADDTIME(aDate, aTime); 

但在這之後,你必須保持它在所有三個列。即,當您添加/更改aDateaTime時,aDateTime不會自動更新。

+0

我是什麼意思就是將兩列物理結合成一個物體,這意味着將會創建一個新列。任何解決方案,我可以做到這一點?謝謝 –

+0

啊,明白了。剛編輯答案。我沒有在我面前的終端,所以它是完全未經測試......但它應該幫助你的方式。 –

+1

我試過你的代碼,它的工作,我從它學到的東西謝謝=) –

0

我不想,如果你想創建一個新的領域,但以防萬一你想做到這一點

alter table t add yournewfield datetime not null; 
UPDATE table t SET younerwfield = addtime(t.date,t.time); 
+0

改變表線程添加dtposted日期時間不爲空; 更新表線程SET dtposted = addtime(threads.dateposted,threads.dateposted); 我做了這樣的事情,列已成功創建,但在UPDATE語句上有錯誤 –

+0

請確保所有屬性都有正確的名稱 –