【问题标题】:How to retrieve records from a table based on date in postgres如何根据postgres中的日期从表中检索记录
【发布时间】:2014-01-23 14:15:43
【问题描述】:

我有表格管理器,其中有日期、电话号码、用户等列。

我想检索记录,比如说我想要日期在 01-01-2014 到 31-01-2014 之间的表中的电话号码。操作就像每天将 50 到 100 个号码插入到表中我会喜欢查看在特定周或特定日期间隔中插入的数字。

我正在使用 postgres,我的日期列是 varchar 类型。我正在尝试在 java web 应用程序中执行此操作,并且将使用 jquery datepicker 选择日期。

样本数据

Date            Number        user
01-01-2014     244548845      user1
02-01-2014     545454454      user2
05-01-2014     244540045      user1
10-01-2014     244540045      user1
20-01-2014     244540000      user2

当我选择 01-01-2014 到 06-01-2014 时,我想获取前 3 条记录

【问题讨论】:

  • 请发布示例数据。
  • 是postgree还是oracle??你应该把oracle标签拿出来!
  • 我已经添加了示例数据。请告诉我,格式看起来不太好或不合适。
  • 选择您的数据并按 ctrl+k 正确缩进 :)
  • 呃,如果你有日期,请将其存储在 date 列而不是 varchar

标签: java sql database oracle postgresql


【解决方案1】:
SET DATESTYLE = "DMY, DMY";

SELECT
  *
FROM
  xxx
WHERE
  Date::date BETWEEN '01-01-2014' AND '06-01-2014'
ORDER BY
  Date::date
LIMIT
  3;

另外,请注意使用类型 date 来存储日期,而不是 varchar!

【讨论】:

    【解决方案2】:

    在创建表时,应将列作为日期提及(必须确保列名不是 DATE) 例如:create table abc(dataentrydate Date not null);

    为了根据日期检索记录,可以使用以下查询

    SELECT  * FROM   abc WHERE   dateentrydate BETWEEN '17-01-2014' AND '22-01-2014' ORDER BY dateentrydate;
    

    非常感谢您提供的回复和帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多