我正在运行一个简单的查询,我试图按日期过滤,就像这样......
SELECT sub.* FROM (
SELECT
fp.forum_post_id as forum_post_id, fp.forum_id as forum_id,
fp.forum_user_id as forum_user_id, fp.forum_title as forum_title,
fp.forum_edit_date as forum_edit_date,
fp.forum_timestamp as forum_timestamp, fpr.id as id,
fpr.fpr_post_id as fpr_post_id, fpr.fpr_id as fpr_id,
fpr.fpr_user_id as fpr_user_id, fpr.fpr_title as fpr_title,
fpr.fpr_edit_date as fpr_edit_date,
fpr.fpr_timestamp as fpr_timestamp,
GREATEST(fp.forum_timestamp, COALESCE(fpr.fpr_timestamp, '00-00-00 00:00:00')) AS tstamp
FROM uap4_forum_posts fp
LEFT JOIN uap4_forum_post_replies fpr
ON fp.forum_post_id = fpr.fpr_post_id
WHERE fp.allow = 'TRUE'
) sub
GROUP BY forum_post_id
ORDER BY tstamp DESC
但是我无法看到2016年11月8日的任何结果。我只能在2016年8月11日之前看到一切。
日期在SQL SERVER中保存为smalldatetime。我真的不确定这是否与它有任何关系。
在这种情况下,时间是一个问题吗?
我需要使用as datetime
保存PurchasedOn日期编辑:
@lamak 在哪里购买了> =' 20161104' AND PurchasedOn< =' 20161108'
答案 0 :(得分:4)
你需要小心你的条件。通过<= '11/08/2016'
使用00:00:00
时间,这就是为什么你没有得到结果。使用:
SELECT *
FROM tblPurchasedProducts
WHERE PurchasedOn >= '20161104' AND PurchasedOn < '20161109';
答案 1 :(得分:0)
SQL中的日期格式为YYYY MM DD,因此您可以编写“2016/04/11”
除非你覆盖它,否则你需要指定日期格式。
尝试:
Select * from tblPurchasedProducts
WHERE PurchasedOn BETWEEN '2016-11-04' AND '2016-11-08'