我已将csv
文件导入sap hana,date
列数据类型在hana表定义中维护为int
。我想将数据类型从int
更改为date
,并希望相应地对记录应用更改。
答案 0 :(得分:0)
如果date
列的值为int
,则必须采用unix_timestamp
形式。
如果要将列转换为date
或datetime
数据类型,最好添加一个包含所需数据类型的新列。然后更新从旧int
列中选择的列。最后,您可以删除int
列,然后开始使用date
类型列。
-- add new datetime type column
ALTER TABLE table_name
ADD COLUMN date_col_new_name DATETIME;
-- add values into the same column
-- read from int type date column
UPDATE table_name
SET date_col_new_name = FROM_UNIXTIME( int_type_date_col );
-- now drop the int type date column
ALTER TABLE DROP COLUMN int_type_date_col;
示例:在UNIX_TIMESTAMP
和FROM_UNIXTIME
:
mysql> drop table if exists ut_xmple;
mysql> create table ut_xmple( date int );
mysql> insert into ut_xmple( date ) values ( unix_timestamp() );
mysql> select * from ut_xmple;
+------------+
| date |
+------------+
| 1399536302 |
+------------+
mysql> alter table ut_xmple add column date_time datetime;
mysql> select * from ut_xmple;
+------------+-----------+
| date | date_time |
+------------+-----------+
| 1399536302 | NULL |
+------------+-----------+
mysql> update ut_xmple set date_time=from_unixtime( date );
mysql> select * from ut_xmple;
+------------+---------------------+
| date | date_time |
+------------+---------------------+
| 1399536302 | 2014-05-08 13:35:02 |
+------------+---------------------+
mysql> select now(), @ut:=unix_timestamp() ut, from_unixtime( @ut ) fut;
+---------------------+------------+---------------------+
| now() | ut | fut |
+---------------------+------------+---------------------+
| 2014-05-08 13:35:54 | 1399536354 | 2014-05-08 13:35:54 |
+---------------------+------------+---------------------+
请参阅: