想要从oracle日期删除时间,但c sharp datetime不会让我

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想要从oracle日期删除时间,但c sharp datetime不会让我相关的知识,希望对你有一定的参考价值。

我有一个对象,它将C#中的oracle日期存储为日期时间。

public DateTime AA_ACTION_DATE { get; set; }

当我运行我的查询时,我按预期得到dateformat:2013-07-04 8:58:04 AM

但是我需要对结果进行过滤,过滤器只在日期而不是时间。

 _oAuditTrail = _oAuditTrail.FindAll(Function(p1) p1.AA_ACTION_DATE = CDate(objFilterRecord))

这适用于没有时间戳的其他日期对象,因为它默认为午夜。

trunc似乎是要走的路,但是,它在toad /数据库级别工作,但C#似乎得到它同样的记录显示为:0001-01-01 12:00:00 AM

尝试了to_dateto_char并且相同的记录被破坏了:

to_date(AA_ACTION_DATE,'dd/mm/yy')返回0001-01-01 12:00:00 AM to_char(AA_ACTION_DATE,'yyyy-mm-dd')返回0001-01-01 12:00:00 AM

在这里疯了,因为它应该是一个简单的解决方案

答案

这一行:

 _oAuditTrail = _oAuditTrail.FindAll(Function(p1) p1.AA_ACTION_DATE = CDate(objFilterRecord))

看起来真的很怀疑我。 CDate()来自VB.Net,而不是C#。

无论如何,正如其他答案中所提到的,你正在寻找的是你的DateTime.Date实例中的DateTime属性,根据文档,它将返回

与此实例具有相同日期的新对象,时间值设置为午夜12:00:00(00:00:00)。

请注意,您不能“删除”DateTime对象的Time部分,因为它是数据结构的一部分,就像您不能从任何其他类“删除”任何其他属性一样,您可以将其设置为非重要值(比如参考类型中的null),或者只是在代码中忽略它。

因此,new DateTime(2013,11,27)将返回11/27/2013 12:00:00 AM,这是未明确指定的DateTime对象的时间“部分”的默认值。

另请注意,如果您的oAuditTrail记录以这种方式创建了DateTimes,它们将默认为12:00:00 AM,而不是“没有时间”,这是不可能的。

这导致了这样的结论:你的语句应该写成(在适当的C#而不是VB.Net并使用LINQ),如下所示:

_oAuditTrail = _oAuditTrail.Where(x => x.AA_ACTION_DATE.Date == someDateTime).ToList();
另一答案

尝试使用DateTime.Date获取一个新的DateTime,其中只包含日期部分,时间截断为午夜。见:http://msdn.microsoft.com/en-us/library/system.datetime.date%28v=vs.110%29.aspx

以上是关于想要从oracle日期删除时间,但c sharp datetime不会让我的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Oracle 中的正则表达式从逗号分隔列表中删除重复项,但我不想要重复值? [复制]

使用 taglib-sharp 删除 ID3 标签的所有图片

从 Oracle 中的日期获取月份名称

使用 to_char 函数解析为字符串时,如何从 Oracle 中的日期和月份值中删除前导零?

Regexp_replace :从 Oracle 中的“+”分隔字符串中删除重复项 [重复]

从 c sharp 客户端应用程序上传到 PHP 服务器