3

我正在开发一个连接到旧 RDB 数据库的 .Net WinForms 应用程序......

日期的某些字段存储为整数(假设 2010-01-04 是整数 20100104)

在 .Net 世界中,我更愿意使用 datetime 对象,并且我已经能够将整数转换为日期,只是它看起来很丑,占用很多行,容易出错而且我想知道是否有人能够改进它...谢谢大家!

注意 - 我不能编辑数据库,所以创建任何形式的“函数”是不可能的......

这是我当前选择整数作为日期时间的方法:

select
CAST(
SUBSTRING(DATE_COL AS VARCHAR(8)) FROM 1 FOR 4) ||
'-' ||
SUBSTRING(CAST(DATE_COL) AS VARCHAR(8)) FROM 5 FOR 2) ||
'-' ||
SUBSTRING(CAST(DATE_COL) AS VARCHAR(8)) FROM 7 FOR 2) ||
' 00:00:00'
AS TIMESTAMP) AS DATE_COL
from MY_TABLE
where ...
4

3 回答 3

3

自从我不得不弄乱 Rdb 以来已经有一段时间了。我似乎记得有一种方法可以通过执行类似的操作来转换为 TIMESTAMP 数据类型

CAST('YYYYMMDDHHMMSSTT' AS TIMESTAMP)

WHERE 'YYYYMMDDHHNNSSTT' 是年-月-日-时-分-秒-分数格式的字符串。您可能需要在此处使用 DATE ANSI 而不是 TIMESTAMP - 就像我说的那样,已经有一段时间了。无论如何,以下可能有效:

SELECT CAST((CAST(DATE_COL AS CHAR(8)) || '00000000') AS TIMESTAMP)...

这仍然很难看,但可能比所有子字符串更好。不管怎样,玩一点,我相信你会明白的。

于 2010-01-04T13:00:44.477 回答
1

在 Oracle 中,您可以在将其date_col转换为字符串后使用 TO_DATE:

TO_DATE(TO_CHAR(date_col), 'YYYYMMDD')

...或“YYYYDDMM”作为日期格式。

参考:

于 2010-01-04T02:16:26.447 回答
0

为什么不使用 LINQ 库?这是非常好的和强大的。

您正在运行的典型查询是什么(请提供高级伪代码)。

于 2010-01-04T02:15:46.307 回答