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

时间:2013-11-27 17:15:04

标签: c# vb.net datetime oracle11g

我有一个对象,它将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 / database级别工作,但是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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这一行:

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

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

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

  

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

请注意,您无法“删除”DateTime对象的Time部分,因为它是数据结构的一部分,就像您无法从任何其他类“删除”任何其他属性一样,您只需将其设置为非重要值(例如,在引用类型的情况下为null),或者只是在代码中忽略它。

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

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

这导致了这样的结论:您的语句应该是用适当的C#而不是VB.Net并使用LINQ编写的:

_oAuditTrail = _oAuditTrail.Where(x => x.AA_ACTION_DATE.Date == someDateTime).ToList();