SQL Query在选择列时将TIMESTAMP转换为String

时间:2017-08-30 06:32:38

标签: sql db2

我正在使用DB2数据库。我有一张桌子,它有两列如下:

表名为sample: 以下是专栏:

CRDATTIM TIMESTAMP NOT NULL , 

RECORDCD CHAR(1) CCSID 37 NOT NULL; 

上表具有以下值:

   CRDATTIM                                   RECORDCD 

2014-08-08 12:12:39.621060                  O   
2014-08-27 07:01:46.814080                  T   
2014-08-27 06:41:47.404080                  T   
2014-08-27 07:14:47.871080                  T   
2014-08-28 02:23:50.390080                  T   
2014-08-28 06:27:58.298080                  T   
2014-09-02 08:57:37.607080                  T

现在,我想通过将sample列下的值转换为字符串而不是CRDATTIM来选择表TIMESTAMP的所有列(从样本中选择*)。

例如,CRDATTIM 2014-08-08 12:12:39.621060列下的值应返回为2014-08-08-12.12.39.621060

同样

2014-08-27 07:01:46.814080应该被退回2014-08-27-07.01.46.814080

等等

有关如何实现这一目标的任何想法?

3 个答案:

答案 0 :(得分:2)

Aniket V的建议帮助我找到了解决方案。

  

在SQL for CRDATTIM字段中尝试嵌套函数。使用TO_CHAR函数将时间戳作为字符串获取,然后应用REPLACE函数以用连字符替换字符串中的空格

以下查询有助于我将Timestamp转换为指定的字符串格式。

select  TO_CHAR(CRDATTIM,'YYYY-MM-DD-HH24.MI.SS.FF6') as CRDATTIM ,recordcd from sample  ;

答案 1 :(得分:0)

答案可能取决于DB2服务器的DB2版本和操作系统平台,但请尝试以下方法:

select timestamp_format(crdattim,'YYYY-MM-DD-HH24.MI.SS.NNNNNN'),recordcd from sample  

您也可以尝试使用to_char()而不是timestamp_format()。

答案 2 :(得分:0)

根据DB2 doc,您可以使用varchar_format()或to_char():

select varchar_format (CURRENT_TIMESTAMP, 'YYYY-MM-DD') from SYSIBM.SYSDUMMY1;