当我尝试将数据从列名称转换为'date'(string: ddmmyyyy ex:09032015)
到fomat datetime(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继续出现。
答案 0 :(得分:0)
您已在下面的评论中指出,有3个字符串字段(日,月和年),并且您将它们连接起来,使它们看起来像09032015
而是以ISO标准方式连接,然后转换为日期。
对于DB2,我会尝试这个:
to_date( ( CONCAT z CONCAT '-' CONCAT Y CONCAT '-' CONCAT X) , 'YYYY-MM-DD' )
其中
如果您有约会,可以将其重新格式化为您喜欢的任何所需样式。
请注意,日期数据类型不以任何特定格式存储。
以下内容是在假设dbms为Oracle的情况下编写的。
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
<强> Results 强>:
| 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 |