首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL Between子句

PostgreSQL Between子句
EN

Stack Overflow用户
提问于 2013-04-08 16:56:42
回答 1查看 423关注 0票数 1

我在这里有一个示例语句:

代码语言:javascript
复制
WHERE e.modified_date::DATE between '2013-04-02'::DATE
AND '2013-04-02'::DATE

注意:

这些日期实际上是可变的。

在pgAdmin中,运行以下命令将得到以下示例表:

代码语言:javascript
复制
username  modified_date
Sample     2013-04-02
Sample1    2013-04-02

这就是我想要的结果。

但是,从Java调用proc将不会产生任何结果。更改第二个日期将返回上一个示例表。如果日期小于第二个变量,则PostgreSQL似乎正在计算该日期。我是不是遗漏了什么?

注:modified_datetimestamp

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-11 10:02:15

列详细信息:

modified_dateTIMESTAMP

下面是在modified_date字段中插入的实际值

modified_date

不带时区的时间戳

2013-04-02 14:05:45.8611

2013-04-02 14:09:14.5422

简单解释为什么使用WHERE子句的测试过程

代码语言:javascript
复制
WHERE e.modified_date >= '2013-04-02'::TIMESTAMP 
AND e.modified_date <='2013-04-02'::TIMESTAMP

不返回任何内容:

  • String'2013-04-02'转换为TIMESTAMP数据类型将导致TIMESTAMP WHERE子句验证字段modified_date (参见值)是否大于或等于'2013-04-02 00:00:00';另一方面,将以false
  • Second,形式返回'2013-04-02 00:00:00'子句验证字段< WHERE >D20(参见值)小于或等于'2013-04-02 00:00:00';,该字段将作为false

返回

此解释仅显示当且仅当modified_date恰好为'2013-04-02 00:00:00'时,SELECT语句才会返回与WHERE子句对应的值

至于这个WHERE子句:

代码语言:javascript
复制
WHERE e.modified_date::DATE BETWEEN '2013-04-02'::DATE
AND '2013-04-02'::DATE

modified_dateString值转换为DATE数据类型将产生下列值:

modified_date as TIMESTAMP = '2013-04-02 14:05:45.8611'

modified_date as DATE = '2013-04-02'

modified_date as TIMESTAMP = '2013-04-02 14:09:14.5422'

modified_date as DATE = '2013-04-02'

String value as STRING = '2013-04-02'

String value as DATE = '2013-04-02'

注意:

这也可以在不将String值强制转换为DATE数据类型的情况下完成。将String转换为我的部分是为了验证目的。

为了回答我的问题,请使用WHERE子句:

代码语言:javascript
复制
WHERE e.modified_date::DATE between '2013-04-02'::DATE
AND '2013-04-02'::DATE

没有返回任何内容是因为我调用的测试存储过程使用了错误的WHERE子句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15875034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档