当我尝试将数据从列名:'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 |