如何在where子句中使用当前时间

4

我有一个问题想问。在Where子句中是否有可能使用当前时间戳代替选择的日期?


SELECT this, that
FROM here
WHERE start>='2010-07-01'

我认为它应该是这样的:start='now()'、curdate()或curtime()。 我找到的所有内容都是在Select子句中使用的,但我需要在Where中使用。
非常感谢任何帮助。 Flora
6个回答

6
SELECT this, that
FROM here
WHERE start >= NOW()

在处理日期时,使用NOW()要小心,因为它也会返回时间部分。在这种特定情况下,你会没问题的,因为你使用了>=。 - Mchl
1
根据快速测试,NOW()在Oracle中可能无法正常工作,因此如果您最终需要迁移到另一个数据库,如果使用NOW()函数,则需要进行一些额外的工作。 - pkauko

4
您可以根据您的需求使用以下三个函数之一:
SELECT NOW(),CURDATE(),CURTIME()

这个查询的输出是 -
NOW()                | CURDATE()    | CURTIME()
---------------------+----------------+----------
2008-11-11 12:45:34  | 2008-11-11   | 12:45:34

编辑: 按照指示,您可以在Where子句中使用这些函数。

2
... WHERE v_date=CURRENT_DATE()

1

1

我会使用

WHERE start >= current_timestamp

这应该在每个DBMS中都可以工作。不过我不确定NOW()是否是标准函数?

更新:现在我知道NOW()至少在Oracle中不起作用,所以我肯定会使用current_timestamp、current_date等,因为这些是标准的。我已经完成了一些DBMS迁移(从DB2到MySQL,从MySQL到Oracle等),我很高兴我们尽可能使用符合标准的SQL,这使得迁移相对轻松。


1

不应该引用函数名称

使用以下方式的函数名称:

  • SELECT this, that FROM here WHERE start >= NOW();

  • SELECT this, that FROM here WHERE start >= CURRENT_DATE();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接