2011-03-05 134 views
0

我从我的数据库中提取的日期值:VB.NET日期比较没有返回正确的结果?

 Dim qfresho = From p In dbConfig.Configs _ 
        Where p.Description = "FROD" _ 
        Select p.dateValue 
     Dim qfreshc = From p In dbConfig.Configs _ 
         Where p.Description = "FRCD" _ 
         Select p.dateValue 

然后比较这些日期值到当前日期:

 If qfresho.First.Value >= Date.Now And qfreshc.First.Value <= Date.Now Then 
     lblFreshman.Text = "Freshmen are currently eligible to register for a room." 
    Else 
     Dim frdays As TimeSpan 
     frdays = (qfresho.First.Value).Subtract(Now) 
     lblFreshman.Text = "Registration will open for freshmen in " & frdays.Days & " days." 
    End If 

但由于某些原因,它总是返回else条件 - 即使数据库中的值应该使查询为真。有任何想法吗?我猜是因为某种原因它不把结果作为一个日期?

回答

1

Date.Now返回一个DateTime,那么你的数据库有日期和时间或日期?如果你只是想要日期,你可以使用Date.Today。

+0

这可能是问题的一部分,但我更新了代码以使用Date.Today,但它仍然无效。当我通过调试器查看各种数据时,我可以看到它将像#3/1/2011#这样的值拉回“Date?”类型。 - 我不确定为什么它不确定? – davemackey 2011-03-05 14:35:04

+0

然后,我会建议添加一些调试,看看哪些条件给你带来麻烦,所以做Debug.WriteLine(qfresho.First.Value> = Date.Now)和Debug.WriteLine(qfreshc.First.Value <= Date.Now)看哪一个评估是错误的。 – 2011-03-05 15:00:10

+0

关于“日期?”键入:这意味着它是一个空的日期。请参阅http://msdn.microsoft.com/en-us/library/bb981315(v=vs.80).aspx – 2011-03-06 17:19:02

1

日期是否有时间组件可能会抛弃比较?

+0

没有时间组件,因此我现在按照John的建议使用Date.Today。 – davemackey 2011-03-05 14:35:20

1

为什么不在比较前添加两个调试?

Debug.WriteLine(qfresho.First.Value.ToString("MM/dd/yyyy hh:mm:ss.ffff")) 
    Debug.WriteLine(qfreshc.First.Value.ToString("MM/dd/yyyy hh:mm:ss.ffff")) 

这应该有所帮助。