在sql中将hh/mm/ss添加到日期

在sql中将hh/mm/ss添加到日期,sql,sql-server,Sql,Sql Server,在下面的查询中,我想在日期中添加hh/mm/ss。我想在日期中添加00:00:00和23:59:59。请帮助我完成此操作 @i_StartDate VARCHAR(50) SELECT Distinct p.ProductID, p.ProductName, ISNULL((SELECT top 1 ISNULL( CurrentStock,0.00) FROM Productstatus PS WHER

在下面的查询中,我想在日期中添加hh/mm/ss。我想在日期中添加00:00:00和23:59:59。请帮助我完成此操作

@i_StartDate VARCHAR(50)

    SELECT Distinct p.ProductID,  
       p.ProductName,  
       ISNULL((SELECT top 1 ISNULL( CurrentStock,0.00)   
        FROM   Productstatus PS  
        WHERE  PS.ProductID =p.ProductID  
               AND PS.LocationID = 1  
               AND  PS.StatusDateTime>= @i_StartDate+'00:00:00' AND  PS.StatusDateTime<= @i_StartDate+'23:59:59'
               and PS.productid=p.productid),0) OpeningStockQuantity
     from Product p

转换为Datetime会对您有所帮助

SELECT Distinct p.ProductID,  
       p.ProductName,  
       ISNULL((SELECT top 1 ISNULL( CurrentStock,0.00)   
        FROM   Productstatus PS  
        WHERE  PS.ProductID =p.ProductID  
               AND PS.LocationID = 1  
               AND  PS.StatusDateTime>= convert(datetime,@i_StartDate+' 00:00:00') AND  PS.StatusDateTime<= convert(datetime,@i_StartDate+' 23:59:59')
               and PS.productid=p.productid),0) OpeningStockQuantity
     from Product p

在日期中添加时间并强制转换为日期时间

SELECT Distinct p.ProductID,  
   p.ProductName,  
   ISNULL((SELECT top 1 ISNULL( CurrentStock,0.00)   
    FROM   Productstatus PS  
    WHERE  PS.ProductID =p.ProductID  
           AND PS.LocationID = 1  
           AND  
CAST(PS.StatusDateTime as DATETIME)>= 
CAST(DATEADD(day, DATEDIFF(day, 0,@i_StartDate), '00:00:00') as DATETIME) AND 
CAST(PS.StatusDateTime as DATETIME)<= 
CAST(DATEADD(day, DATEDIFF(day, 0,@i_StartDate), '23:59:59') as DATETIME) AND
PS.productid=p.productid),0) OpeningStockQuantity
 from Product p

->

假设您使用的是SQL 2008+,只需将StatusDateTime转换为Date并与@i_StartDate进行比较即可

DECLARE @i_StartDate date = '2014-11-01'

    SELECT DISTINCT 
        p.ProductID,  
        p.ProductName,  
        ISNULL((SELECT top 1 ISNULL(CurrentStock,0.00)   
        FROM   Productstatus PS  
        WHERE  PS.ProductID =p.ProductID  
            AND PS.LocationID = 1  
            AND  CAST(PS.StatusDateTime AS DATE) = @i_StartDate
            AND PS.productid=p.productid),0) OpeningStockQuantity
        FROM Product p

为什么PS.StatusDateTime=@i_StartDate其中@i_StartDate='2014-11-01'?接受的格式将取决于您的安装。PS.StatusDateTime是什么数据类型和格式?
DECLARE @i_StartDate date = '2014-11-01'

    SELECT DISTINCT 
        p.ProductID,  
        p.ProductName,  
        ISNULL((SELECT top 1 ISNULL(CurrentStock,0.00)   
        FROM   Productstatus PS  
        WHERE  PS.ProductID =p.ProductID  
            AND PS.LocationID = 1  
            AND  CAST(PS.StatusDateTime AS DATE) = @i_StartDate
            AND PS.productid=p.productid),0) OpeningStockQuantity
        FROM Product p