格式化和比较两个日期字段

时间:2015-02-10 14:45:40

标签: sql sql-server

我正在尝试比较两个日期字段,而我正在格式化它但似乎无法工作。 select语句有效,但我遇到了where子句

的问题
SELECT fname
    ,lname
    ,email
    ,rdate_up = CONVERT(VARCHAR(19), GETDATE())
    ,last_time = CONVERT(VARCHAR(19), GETDATE())
FROM my_account
WHERE my_account.email = MMColParam
    AND rdate_up = CONVERT(VARCHAR(19), GETDATE()) < last_time_log = CONVERT(VARCHAR(19), GETDATE())

2 个答案:

答案 0 :(得分:1)

在将日期转换为字符串后,不要比较日期(或任何事情)。

在转换为字符串之前比较它们。

仅在将某些内容显示给人类之前将其转换为字符串。

SELECT
    date1,
    date2 = GETDATE(),
    date1toShowToAHumanBeing = CONVERT(VARCHAR(19), date1),
    date2toShowToAHumanBeing = CONVERT(VARCHAR(19), date2)
FROM my_account
WHERE date1 < date2 

答案 1 :(得分:1)

我猜这不是你真正的问题,因为将GETDATE()与自身进行比较总是相等的。

如果您想转换SELECT中的日期,那我很好,我猜你是这个意思:

SELECT fname
    ,lname
    ,email
    ,CONVERT(VARCHAR(19), rdate_up)
    ,CONVERT(VARCHAR(19), last_time)
FROM my_account

但是使用WHERE子句中的实际日期值并摆脱转换:

WHERE my_account.email = MMColParam
    AND rdate_up < last_time_log