我正在创建一个接收两个日期作为参数的过程。
该过程适用于具有以下列的表(我将实际表的图片放在一起,但我还没有足够的声誉):
日期显示名称标签容量
表中包含的数据已经收集了几年,从一天开始,displayName列引用了Vmware的名称。因此,开始日期可能只有3个条目,结束日期有5个(反映在其间创建了Vmware)。我想做的如下。给定开始日期和结束日期,我希望能够仅选择在两个日期之间创建(或添加,如果愿意)的displayName(以及它们的标签和容量)。我拥有的是
CREATE PROCEDURE afficherCreationLuns @start Date, @end Date
AS
BEGIN
SELECT dateCollecte, DisplayName, label, capacity
FROM Vsp
WHERE dateCollecte = @end AND displayName NOT IN (SELECT displayName
FROM Vsp
WHERE dateCollecte = @start)
END
仅当开始日期是创建Vmware的确切日期(因此将displayName添加到条目中)时,此方法才有效。如果你选择一个日期之前没有出现任何内容。
我也试过了 WHERE dateCollecte> = @start AND dateCollecte< @end
但无论选择的日期如何,这都没有用。
我也尝试过像这样定义日期
@start Date = '2014-05-01', @end = '2014-05-02'
但它不会改变任何东西。
现在我不确定是否可以这样做,但我也想要以下内容:
感谢帮助人员!
P.S。如果有帮助,这是表格的结构:
----------------
Columns for: Vsp
----------------
----------DEV_TechnoWin dbo Vsp id 4 int identity 10 4 0 10 0 4 1 NO 56
----------DEV_TechnoWin dbo Vsp dateCollecte -9 date 10 20 1 -9 2 YES 0
----------DEV_TechnoWin dbo Vsp displayName -9 nvarchar 250 500 1 -9 500 3 YES 39
----------DEV_TechnoWin dbo Vsp capacityInKB 6 float 15 8 10 1 6 4 YES 109
----------DEV_TechnoWin dbo Vsp consumedCapacityInKB6 float 15 8 10 1 6 5 YES 109
----------DEV_TechnoWin dbo Vsp dpPoolId 4 int 10 4 0 10 1 4 6 YES 38
----------DEV_TechnoWin dbo Vsp label -9 nvarchar 250 500 1 -9 500 7 YES 39
----------DEV_TechnoWin dbo Vsp tieringPolicy 4 int 10 4 0 10 1 4 8 YES 38
----------DEV_TechnoWin dbo Vsp dpTier0ConsumedCapacityInKB6 float 15 8 10 1 6 9 YES 109
----------DEV_TechnoWin dbo Vsp dpTier1ConsumedCapacityInKB6 float 15 8 10 1 6 10 YES 109
----------DEV_TechnoWin dbo Vsp dpTier2ConsumedCapacityInKB6 float 15 8 10 1 6 11 YES 109
----------DEV_TechnoWin dbo Vsp dateImport -9 date 10 20 1 -9 12 YES 0
答案 0 :(得分:0)
尝试在您的案例中使用BETWEEN
CREATE PROCEDURE afficherCreationLuns (@start Date, @end Date)
AS
BEGIN
SELECT dateCollecte, DisplayName, label, capacity
FROM Vsp
WHERE dateCollecte BETWEEN @end AND @start
END
BY msdn
查询检索预期的行,因为中的日期值 查询和存储在RateChangeDate列中的日期时间值具有 没有时间的一部分指定日期。当时间部分 未指定,默认为上午12点。注意那一行 包含在上午12点之后的时间部分。在2002-01-05不会 由此查询返回,因为它超出了范围。