如何将序号日期更改为 MMDDYYYY
How to change Ordinal Date to MMDDYYYY
我有一个 SQL 字符串,用于转换存储在服务器上的序号日期,但是当我将字符串添加到 VBA 时,我得到 Run Time Error that the Column or global variable doesn't exist
.
当我在 Microsoft Query 中使用该字符串时,它工作得很好。请注意我几乎不知道 SQL.
这是我用来从 YYYYDD 转换为 MMDDYYYY 的 SQL 字符串
decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0)
下面是我如何将它实现到 VBA 中,用于 Excel
strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST "
strSQL = strSQL & " WHERE (CFMAST.CFDOB7<>0) AND (CFMAST.CFDOB7<>1800001)"
当我 运行 通过 Microsoft Query 进行查询时,我得到了预期的结果,它格式化了 CFMAST.CFDOB7 as MMDDYYYY
中的所有日期,但是当我 运行 [=14] 中的字符串时=] 我收到以下错误:
[IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0206 - Column or
global variabl CFDOB7 not found.
问题可能是您为 table CNCTTP08.JHADAT842.CFMAST
使用了由三部分组成的名称。删除系统名称 CNCTTP08
并仅使用架构和 table JHADAT842.CFMAST
。您的 ODBC 连接应该可以让您进入正确的系统。
另一个问题可能是 DB2 for i 并不真正喜欢相关名称,除非已明确定义相关名称。因此,如果您确实需要三部分名称,请在 from
子句中添加相关标识符,如下所示:
FROM CNCTTP08.JHADAT842.CFMAST AS CFMAST
尝试在 FROM 子句中使用别名,例如 "FROM CNCTTP08.JHADAT842.CFMAST T01" 并使用 T01 替换 CFMAST
strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(T01.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST T01"
strSQL = strSQL & " WHERE (T01.CFDOB7<>0) AND (T01.CFDOB7<>1800001)"
告诉我你得到了什么。
我有一个 SQL 字符串,用于转换存储在服务器上的序号日期,但是当我将字符串添加到 VBA 时,我得到 Run Time Error that the Column or global variable doesn't exist
.
当我在 Microsoft Query 中使用该字符串时,它工作得很好。请注意我几乎不知道 SQL.
这是我用来从 YYYYDD 转换为 MMDDYYYY 的 SQL 字符串
decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0)
下面是我如何将它实现到 VBA 中,用于 Excel
strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST "
strSQL = strSQL & " WHERE (CFMAST.CFDOB7<>0) AND (CFMAST.CFDOB7<>1800001)"
当我 运行 通过 Microsoft Query 进行查询时,我得到了预期的结果,它格式化了 CFMAST.CFDOB7 as MMDDYYYY
中的所有日期,但是当我 运行 [=14] 中的字符串时=] 我收到以下错误:
[IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0206 - Column or global variabl CFDOB7 not found.
问题可能是您为 table CNCTTP08.JHADAT842.CFMAST
使用了由三部分组成的名称。删除系统名称 CNCTTP08
并仅使用架构和 table JHADAT842.CFMAST
。您的 ODBC 连接应该可以让您进入正确的系统。
另一个问题可能是 DB2 for i 并不真正喜欢相关名称,除非已明确定义相关名称。因此,如果您确实需要三部分名称,请在 from
子句中添加相关标识符,如下所示:
FROM CNCTTP08.JHADAT842.CFMAST AS CFMAST
尝试在 FROM 子句中使用别名,例如 "FROM CNCTTP08.JHADAT842.CFMAST T01" 并使用 T01 替换 CFMAST
strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(T01.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST T01"
strSQL = strSQL & " WHERE (T01.CFDOB7<>0) AND (T01.CFDOB7<>1800001)"
告诉我你得到了什么。