SQL Server结合日期和时间然后进行比较

时间:2013-12-20 19:08:32

标签: mysql sql sql-server datetime

您好我正在尝试根据日期和时间列查询SQL数据库中的记录。我想选择超过特定日期的所有记录。这是我试过的。

SELECT * FROM `table` WHERE status = 1 AND odate >= ? AND otime > ?;

这不起作用,因为即使日期值更大,时间也必须更大。我不确定如何做到这一点?我正在使用MS SQL。

以下是测试用例......

DB记录|| odate:12/20/2013 otime:下午4:55:00

通过Params || 日期:2013年12月15日 时间:下午6:13:00

尽管odate>日期不是时间>比时间。

所以我的查询,

AND odate >= ? AND otime > ?;

失败。

2 个答案:

答案 0 :(得分:1)

如果odateotime都是数据类型的日期时间,只需将日期和时间加在一起。

Where odate + otime > ?;

如果它们不是数据类型datetime,那么只需将它们首先转换为datetime。

请参阅this stackoverflow answer

答案 1 :(得分:0)

以下是今天的日期:

SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY]

以下是您获取当前时间的方式:

SELECT CONVERT(VARCHAR(8), GETDATE(), 108)

将这些应用到表格中的字段。另外,我不能说,但看起来你的DateTime字段被称为“日期”?这是一个保留字,当你使用它时会引起你的问题。如果这是真的,你无法改变它,你需要用括号括起来(比如:[date]),否则它会尝试解决日期而不是拿起你的字段值。