如何将字符串 ddmmyyyy 转换为提供程序IBMDA400的日期时间 fomat (DD/MM/YYYY)



当我尝试将数据从列名:'date'(string: ddmmyyyy ex:09032015)转换为 fomat 日期时间 (DD/MM/YYYY) 并且我正在使用提供程序IBMDA400时遇到问题。

我使用一些命令尝试转换,但没有成功。

我的目的只是从数据库中选择数据,但Visual Studio总是显示错误。

前任:

Cmd1: select date(to_date(my string,'dd/mm/yyyy') from table

-> 这里出现错误:SQ20448: Expression not valid using format string specified for TIMESTAMP_FORMAT.

我改变了:'TIMESTAMP_FORMAT'而不是'TO_DATE'
CMD2: select TIMESTAMP_FORMAT(mystring, 'DD/MM/RRRR HH24:MI')
->错误SQ20448继续发生。

您已经通过下面的注释指出有 3 个字符串字段(用于日、月和年),并且将它们连接起来,使它们看起来像09032015

而是以 ISO 标准方式连接,然后转换为日期。

对于 DB2,我会尝试以下方法:

to_date( ( CONCAT z CONCAT '-' CONCAT Y CONCAT '-' CONCAT X) , 'YYYY-MM-DD' )

哪里

  • Z = 年份字符串
  • Y = 月份字符串
  • x = 天字符串

确定日期后,您可以将其重新格式化为您喜欢的任何所需样式。

请注意,日期数据类型不以任何特定格式存储。


以下内容是在 dbms 是 Oracle 的(错误)假设下准备的。

SQL 小提琴

Oracle 11g R2 架构设置

CREATE TABLE TABLE1
    (X date, Y timestamp, Z varchar2(60))
;
INSERT ALL 
    INTO TABLE1 (X,Y,Z)
         VALUES (to_date('09032015','ddmmyyyy'), to_timestamp('09032015','ddmmyyyy'), '09032015')
SELECT * FROM dual
;

查询 1

SELECT
  TO_CHAR(X, 'DD/MM/YYYY') 
, TO_CHAR(Y, 'DD/MM/YYYY')
, substr(Z,1,2) || '/' || substr(Z,3,2)  || '/' || substr(Z,5,4) 
FROM TABLE1

结果

| TO_CHAR(X,'DD/MM/YYYY') | TO_CHAR(Y,'DD/MM/YYYY') | SUBSTR(Z,1,2)||'/'||SUBSTR(Z,3,2)||'/'||SUBSTR(Z,5,4) |
|-------------------------|-------------------------|-------------------------------------------------------|
|              09/03/2015 |              09/03/2015 |                                            09/03/2015 |

最新更新