gpt4 book ai didi

.net - 将 .NET DateTime 转换为 OracleDate

转载 作者:行者123 更新时间:2023-12-05 01:30:34 26 4
gpt4 key购买 nike

我正在尝试使用 ODP.NET 将 .NET DateTime 值插入到 Oracle DATE 列中。到目前为止,我已经尝试使用 OracleDate() 构造函数来转换 .NET DateTime,如下所示:

new OracleDate(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTimeNow.Hour, DateTime.Now.Minute, DateTime.Now.Second)

当我尝试这个时,它会在列中插入正确的年、月和日,但时间总是设置为午夜。如何插入正确的时间和日期?

没有参数,SQL 看起来像这样(DateTime.Now 用于清楚,否则我只使用 SYSDATE):

"update mytable set timestamp = '" + new OracleTimeStamp(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTimeNow.Second) + "'"

最佳答案

根据this你应该使用 OracleTimeStamp 作为 OracleDbType 来实现你想要的......

OracleDate 没有时间部分...这种行为开始于前一段时间(IIRC Oracle 8 左右)使用 JDBC 驱动程序...使用 JDBC 驱动程序有一些奇怪的解决方法,我现在不记得了...我不知道 ODP.NET 是否有解决方法... OracleTimeStamp 是官方支持的带有时间部分的日期方式...

EDIT - OP添加SQL语句后:

首先,该语句包含两个问题 - 永远不要将列/表命名为保留字(即 timestamp)...另一个问题是缺少使用在这种情况下的参数不会导致 SQL 注入(inject),但仍然是不好的做法,并且会导致(如果多次使用同一语句)将性能损失降至最低...

如果您仍然想以这种方式使用它,那么这将起作用:

"update mytable set timestamp = TO_DATE ('" + DateTime.Now.ToString ("yyyyMMddHHmmss") + "', 'YYYYMMDDHH24MISS')";

关于.net - 将 .NET DateTime 转换为 OracleDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7273076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com