2011-09-29 64 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

请确保所有属性都有正确的名称 –