0

我正在尝试创建一个列表,但我被难住了。所以我有一个带有 start_date 字段的表,其中包含日期的 Unix 时间戳。我正在尝试查询表并从时间戳中提取日期,然后具有该日期的任何结果都将低于该日期,依此类推。几乎就像在列表视图中带有事件的日历。

我正在用 PostgreSQL 和 PHP 做这个。不知道如何编写该查询。但是,我看到 PostgreSQL 的 extract、date_part 等函数,仍然不确定如何获得正确的查询。

任何帮助或示例将不胜感激。

4

2 回答 2

1

date('d M Y', $timestamp);应该为您提供该特定 UNIX 时间戳的日期、月份和年份。

如果您想将它放在列表视图中,select请按字段(升序或降序)对数据库运行查询start_date,然后在 $row 中获取它。然后在一个一个处理记录的循环中,执行以下操作:

$prevDate = ' ';
$currentDate = ' ';

for each ( $row ) //however it goes
{
    $currentDate = date('d M Y',$row['start_date']);
    if($prevDate != $currentDate)
    {
        echo "Day : ".$currentDate;
    }
    echo $row['other-fields'];
    $prevDate = $currentDate;
 }

但是,PostgreSQL 支持date数据类型,使用它应该可以简化您的操作。

http://www.postgresql.org/docs/8.2/static/datatype-datetime.html

于 2012-10-03T19:00:48.627 回答
0

date从 Unix 纪元中提取 a 的最简单/最快的方法:

SELECT to_timestamp(my_epoch_ts)::date;

例子:

SELECT to_timestamp(1349118398)::date

结果:

2012-10-01

那是利用该to_timestamp()函数,然后是迄今为止的演员:::date

更多详细信息和链接在此最近相关答案的末尾。

于 2012-10-03T19:11:13.463 回答