【发布时间】:2016-09-29 14:41:21
【问题描述】:
我正在用 C# 编写一个程序,其中一部分是从 DB2 服务器获取日期。日期在服务器上存储为长度为 4 的整数值。日期只保留月份和日期我遇到的问题是它们的存储精度不同。 编辑: 数据类型是数字长度 4,没有精度(所以整数长度 4)但是当 Select 语句运行时,所有内容都作为字符串返回。这就是我使用 SubStr() 的原因。
示例
一个日期存储为 1003,表示日期 10/03
另一个日期存储为 805 代表 8/05
我用来提取日期的 SQL 代码
(SubStr(ML2DDM,0,3) ||'/'|| SubStr(ML2DDM,3,2))as Due__Date
程序以下列格式返回日期
10 月 3 日
80/5
有没有办法每次都正确格式化值?
【问题讨论】:
-
'(SubStr(ML2DDM,0,3) ||'/'|| SubStr(ML2DDM,3,2))as Due__Date' 看起来不像 Sql :)
-
@Dan Nor 喜欢 c# :)
-
这是完全有效的 SQL,尽管使用“0”作为 SUBSTR() 的起始位置即使有效也是不寻常的。并且对 INTEGER 列使用 SUBSTR() 也是不明智的,尽管在某些情况下当值自动转换为 CHAR 时可能有意义。
-
('{'||ML2DDM||'}') 在您的两个示例案例中给出了什么结果?
-
请提供“存储为长度为4 的整数值” 所隐含的DDL,以消除歧义。最好的猜测是 4 位字符串,因此是 CHAR(4)。但是,即使该列的数据类型为 INTEGER [4-bytes],给定表达式的结果也与 CHAR(4) 相同。然而,这些类型都不会产生给定 SQL 表达式所显示的效果。相反,结果如下:
10 /05和80 /5
标签: c# db2 ibm-midrange db2-400