我有这个问题:
我们的 AS400 将日期保留为十进制,格式为yyyyMMdd,但是当我在我们的软件中需要它们时,它们应该是格式为 ddMMyyy的DateTime
我怎样才能最好地获得正确的格式和类型?我查看了 IBM 网站以设置连接时的格式...但似乎您需要将日期放在 DateTime 类型的列中才能开始设置格式。
我还尝试克隆数据表并将适当的列设置为正确的数据类型,但随后我需要循环所有行和每个单元格以进行转换,这在大型查询中几乎是不可能的。
有人可以帮帮我吗?
这是我用来更改执行查询的日期字段的代码:
' convert date for selects
If type = Operation.SelectMultipleRows Or type = Operation.SelectSingleValue Then
For Each s As String In _datefields
sql = sql.Replace(s, "REPLACE(CHAR(DATE(SUBSTR(CHAR(" & s & "), 1, 4) ||'-'|| SUBSTR(CHAR(" & s & "), 5, 2) ||'-'|| SUBSTR(CHAR(" & s & "), 7, 2)),EUR),'.','/') as " & s)
Next
End If
只有在选择查询中给出了请求的字段时,上述方法才有效。如果您使用 * 那么它根本不起作用。
在 iSeries AS400 中,如果您知道表名,您可以获得所有列名的列表,但我不能依赖它,因为传递的查询可能包含连接,...。
例子:
SELECT COLUMN_NAME FROM QSYS2/COLUMNS WHERE TABLE_NAME = 'MYTABLE'