0

我想要在允许日期内的所有记录。

SELECT
  page_id, page_published_date, page_expired 
FROM 
  pages
WHERE
  ([page_published_date] <= getdate() OR [page_published_date] is null)
  AND
  ([csp_expired] <= getdate() OR [page_expired] is null)

请注意,日期可以包含空值。

示例表:

page_id, page_published_date, page_expired
1        2012-10-05           null
2        null                 2012-10-01
3        2012-08-01           2012-11-30

在这种情况下,正确的记录是 3。

4

2 回答 2

0
SELECT
  page_id, page_published_date, page_expired 
FROM pages
WHERE
(
    [page_published_date] >= getdate()
    OR [page_published_date] is null
)
AND (
    [page_expired] <= getdate()
    OR [page_expired] is null
)
于 2012-10-02T12:08:58.383 回答
0

编辑后的答案,基于选择 #3 作为唯一结果

SELECT
  page_id, page_published_date, page_expired 
FROM 
  pages
WHERE
  -- Publication date BEFORE today (current time)
  ([page_published_date] <= getdate() OR [page_published_date] is null)
  AND
  -- and page has not expired
  (datediff(d,0,getdate()) < [page_expired] OR [page_expired] is null)

从主题行直接翻译

SELECT
  page_id, page_published_date, page_expired 
FROM 
  pages
WHERE
  -- Publication date greater than today
  ([page_published_date] > DateDiff(D,0,getdate()) OR [page_published_date] is null)
  AND
  -- and [Publication date?] less than the expiration date
  ([page_published_date] < [page_expired] OR [page_expired] is null)

笔记:

  1. DateDiff(D,0,getdate())给你“今天”,即没有时间部分
  2. 我有一种感觉,您不想将 [page_expired] 与今天进行比较,因为在第一个条件下,今天早于 [page_published_date]
  3. 如果我的解释有误,请使用我的翻译模式根据需要插入任何更改
于 2012-10-02T12:24:57.993 回答