我正在尝试比较两个日期字段,而我正在格式化它但似乎无法工作。 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())
答案 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