【发布时间】:2011-10-17 01:37:44
【问题描述】:
如何将此查询修改为 >>> @Date1 是日期(只有日期没有时间)
SELECT DISTINCT TOP (200) dbo.tb_ShowTime.VenueId, DATEADD(Hour, DATEDIFF(Hour, 0, dbo.tb_ShowTime.StartDateTime), 0) AS StartDateTime
FROM tb_ShowTime
WHERE (dbo.tb_ShowTime.IsDeleted = 0) AND (dbo.tb_ShowTime.StartDateTime BETWEEN @Date1 AND @Date2)
UNION
SELECT DISTINCT TOP (200) dbo.tb_EventSectionTime.VenueId, DATEADD(Hour, DATEDIFF(Hour, 0, dbo.tb_EventSectionTime.EventTime), 0) AS StartDateTime
FROM tb_EventSectionTime
WHERE (dbo.tb_EventSectionTime.IsDeleted = 0) AND (dbo.tb_EventSectionTime.EventTime BETWEEN @Date1 AND @Date2)
ORDER BY StartDateTime
【问题讨论】:
-
仅供参考:使用 UNION 的 DISTINCT 是多余的,因为 UNION 会删除重复项。此外,每个中的 TOP 200 是随机的 200 行。您需要一个派生表才能在 UNION 和外部 ORDER BY 之前读取 TOP 200..ORDER BY...
-
什么意思?一个简单的
EventTime> @Date1? >>> 在您的问题中是什么意思? -
我读到 OP 需要更改查询,以便 @Date1 是不包括时间的日期,假设它当前是
datetime。
标签: sql stored-procedures date