SQL查询时间戳日期字段并按日期对所有结果进行分组

时间:2012-10-03 18:36:57

标签: php postgresql

我正在尝试创建一个列表而且我很难过。 所以我有一个表,其中包含一个start_date字段,该字段包含日期的Unix时间戳。 我正在尝试查询表并从时间戳中提取日期,那么该日期的任何结果都将在该日期之下,依此类推。几乎就像列表视图中包含事件的日历。

我正在使用PostgreSQL和PHP。不确定如何编写该查询。我为PostgreSQL看到了诸如extract,date_part等函数,但是仍然不确定如何获得正确的查询。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

从Unix时代中提取date的最简单/最快的方法:

SELECT to_timestamp(my_epoch_ts)::date;

示例:

SELECT to_timestamp(1349118398)::date

结果:

2012-10-01

正在使用to_timestamp()函数,后跟cast to date: ::date

this recent related answer末尾的更多详情和链接。