我正在开发一个连接到旧版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 ...
答案 0 :(得分:3)
因为我不得不乱用Rdb已经有一段时间了。我似乎记得有一种方法可以通过执行类似
的操作转换为TIMESTAMP数据类型CAST('YYYYMMDDHHMMSSTT' AS TIMESTAMP)
在哪里'YYYYMMDDHHNNSSTT'是一个年 - 月 - 日 - 小时 - 分 - 秒分数格式的字符串。你可能需要在这里使用DATE ANSI而不是TIMESTAMP - 就像我说的那样,它已经有一段时间了。无论如何,以下可能有效:
SELECT CAST((CAST(DATE_COL AS CHAR(8)) || '00000000') AS TIMESTAMP)...
仍然很丑,但也许比所有子串都要好。无论如何,玩一下,我相信你会得到它。
答案 1 :(得分:1)
在Oracle中,您可以在将date_col
转换为字符串后使用TO_DATE:
TO_DATE(TO_CHAR(date_col), 'YYYYMMDD')
...或'YYYYDDMM'代表日期格式。
参考文献:
答案 2 :(得分:0)
为什么不使用LINQ库?这是非常好的和强大的。
您正在运行的典型查询是什么(请使用高级伪代码)。