我有 2 个 SQL 脚本。像这样的一个:
"Date" > '2014-04-11' AND "Date" <= '2014-04-12'
Run Code Online (Sandbox Code Playgroud)
另一个是这样的:
"Date" BETWEEN '2014-04-11' AND '2014-04-12'
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否有任何具体的最佳实践,一个比另一个更好的理由,以及其中一个是否因为某些明显的原因而更好,我在路上的某个地方错过了。
您正在寻求最佳实践。我认为以下是最佳实践:
"Date" >= DATE '2014-04-11' AND "Date" < DATE '2014-04-12' + 1
Run Code Online (Sandbox Code Playgroud)
首先,注意关键字的使用DATE。您的问题是关于日期的,但您使用的是 Oracle 不直接支持的日期格式。令人高兴的是,Oracle 支持 ANSI 标准DATE关键字和 ISO 标准格式。
其次,我添加了一个,+1以便您可以看到时间段的结束时间,这可能是您希望在代码中看到的内容。它不应该影响性能,因为它+ 1是一个常数。
第三,日期常量具有时间成分。如果未指定,则为该日期的午夜。所以,表达式:
"Date" BETWEEN '2014-04-11' AND '2014-04-12'
Run Code Online (Sandbox Code Playgroud)
是真的:
"Date" >= TIMESTAMP '2014-04-11 00:00:00' AND "Date" <= TIMESTAMP '2014-04-12 00:00:00'
Run Code Online (Sandbox Code Playgroud)
也就是说,恰好包含较晚日期之后的一个时间,即午夜的第一个时刻。这通常不是您想要的。Oracle 在两个方面使这个问题变得更糟:
date类型包括时间分量。date没有时间部分。因此,为了最安全,请使用以下规则:
between在日期上使用。>=第一次约会。<第二个用户。Aaron Bertrand 有一个关于这个主题的博客。尽管它是专门针对 SQL Server 的,但许多想法也适用于 Oracle — 特别是因为dateOracle 中的数据类型包含时间。
| 归档时间: |
|
| 查看次数: |
1222 次 |
| 最近记录: |