在hana SQL表定义中从int转换为date数据类型

时间:2014-05-08 07:08:24

标签: mysql sql csv hana

我已将csv文件导入sap hana,date列数据类型在hana表定义中维护为int。我想将数据类型从int更改为date,并希望相应地对记录应用更改。

1 个答案:

答案 0 :(得分:0)

如果date列的值为int,则必须采用unix_timestamp形式。

如果要将列转换为datedatetime数据类型,最好添加一个包含所需数据类型的新列。然后更新从旧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_TIMESTAMPFROM_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 |
+---------------------+------------+---------------------+

请参阅