Enumerating new articles whose publication start date has passed (cn.PublishEnd == null || cn.PublishEnd &lt; DateTime.Now)


vs

(cn.PublishEnd ?? DateTime.MinValue &lt; DateTime.Now)


Which is more readable?
I'm inclined towards the second form, but something tells me I'm wrong.

Context:

namespace Damnation.Website.Main.Business.Extensions
{
    public static class CommunityNews
    {
        public static IEnumerable&lt;DAL.CommunityNews&gt; Published(this ObjectSet&lt;DAL.CommunityNews&gt; table)
        {
            return table.Where(cn =&gt; cn.PublishStart &gt; DateTime.Now &amp;&amp; DateTime.Now &gt; (cn.PublishEnd ?? DateTime.MinValue)).OrderByDescending(cn =&gt; cn.PublishStart);
        }
    }
}


Types

DateTime PublishStart
DateTime? PublishEnd
As for me, the first form is more readable because it clearly describe the condition. It's easy to read and understand. The second form is a little confusing. The first thought I had was: What is the DateTime.Zero? Is this a default value for PublishEnd? If yes then why not to use the DateTime.MinValue? Maybe it's not a default value and I get it wrong somewhere? Of course these thoughts took only seconds but nevertheless.
In general I think that ?? should be used to return the default value with expected type. The default value of the  PublishEnd should be of DateTime type. But the second form distorts the meaning of ?? and returns bool type instead, and it’s confusing.  

Edited:
If you want to read is like you said: "if now is greater than (end date or earliest date)"
then you should write it like:

(DateTime.Now &gt; cn.PublishEnd ?? DateTime.MinValue)


And this, third form is better than first and second.