将DateTIme Column值与DateTime String SQL Server进行比较

时间:2015-09-02 10:54:05

标签: sql-server sql-server-2008

我正在尝试将DateTime字符串与DB中的DateTime值列进行比较但是它返回0记录这是查询

DECLARE @p_date DATETIME
SET @p_date= CONVERT( DATETIME, '9/1/2015 10:06:22 PM', 131 )
SELECT UpdateUserId, UpdateTimeA 
From SubmitSheets 
WHERE CONVERT( DATETIME, UpdateTimeA, 131 ) = @p_date

UpdateTimeA列中的值为2015-09-01 22:06:22.447

3 个答案:

答案 0 :(得分:0)

我认为@p_date参数格式不同。试试这个:

DECLARE @p_date DATETIME
SET @p_date= CONVERT( DATETIME, '9/1/2015 10:06:22 PM')
SELECT UpdateUserId, UpdateTimeA 
From SubmitSheets 
WHERE CONVERT(DATETIME, (CONVERT(VARCHAR, UpdateTimeA, 101) + ' ' + CONVERT(VARCHAR, UpdateTimeA, 108)), 131) = CONVERT(DATETIME, @p_date, 131)

所以另一个试用可能是

一个例子:

DECLARE @a TABLE
(
    ID  int,
    datet datetime
)

INSERT INTO @a
        (ID, datet)
VALUES  (1 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(2 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(3 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(4 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(5 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(6 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(7 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(8 ,  CONVERT(DATETIME, GETDATE(), 131))
        ,(9 ,  CONVERT(DATETIME, GETDATE(), 131))



SELECT ID, datet, ConvDatetime
FROM 
    (
        SELECT ID, datet
            ,CONVERT(DATETIME, (CONVERT(VARCHAR, datet, 101) 
            + ' ' 
            + CONVERT(VARCHAR, datet, 108)), 131) AS ConvDatetime
        FROM 
            @a
    ) AS dt
WHERE 
    dt.ConvDatetime= CONVERT(DATETIME, 
                            (CONVERT(VARCHAR, GETDATE(), 101) 
                            + ' ' 
                            + CONVERT(VARCHAR, GETDATE(), 108))
                        , 131) -- CONVERT( DATETIME, '9/1/2015 10:06:22 PM', 131 )

答案 1 :(得分:0)

就像我在评论中所说的那样,我不确定131是否是转换为datetime的正确方式(至少,我得到一个非常不同的值)。

如果你想比较没有第二部分的日期,你必须比较为字符串。将两个日期转换为varchar(19)将切断分数。

答案 2 :(得分:0)

终于找到了办法

SELECT UpdateUserId,UpdateTimeA 
From SubmitSheets 
WHERE CONVERT(VARCHAR(16),UpdateTimeA,100) = CONVERT(VARCHAR(16),CONVERT( DATETIME, '9/1/2015 10:06:22 PM',101),100)