`start_time` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',

及一条数据将这样显示:2014-03-17 10:59:54


在Yii中进行比较时可以这么写:

方法一:

$criteria = new CDbCriteria();
        $time = date('Y-m-d H:i:s');// 获得当前时间,格式为2014-03-17 00:20:01
        $criteria->addCondition("t.start_time < " . "'" . $time . "'");// 需要用单引号将时间引起来
        $activities = Activity::model()->findAll($criteria);



方法二(使用from_unixtime函数):

$criteria = new CDbCriteria();
        $criteria->compare('t.project', $projectId);
        $criteria->compare('t.active', Constant::ACTIVE);
        $time = time(); // 时间戳的格式
        $criteria->addCondition('t.start_time < from_unixtime(' . $time . ')'); // 使用from_unixtime函数将时间转换为 2014-3-17 00:20:01的格式
        $criteria->addCondition('t.end_time > from_unixtime(' . $time . ') or t.open_ended =' . Constant::OPENEND);
        $activities = Activity::model()->findAll($criteria);



总结:两种方法都是需要把时间格式变为2014-03-17 00:20:01的格式


PHP中date的方法:

http://developer.51cto.com/art/200912/167897.htm

PHP date()参数包括:表示"AM"或是"PM" 的A;表示几日的d;表示星期几的D;表示月份的F;还有12小时制的h和24小时制的H等等。

PHP date()参数的熟练掌握,有助于我们对这个函数的了解。在接下来的这篇文章中将会针对PHP date()参数总结出一个列表,方便大家参考

在页面的最前页加上

date_default_timezone_set(PRC); /*把时间调到北京时间,php5默认为格林威治标准时间*/

date ()a: "am"或是"pm"

PHP date()参数A: "AM"或是"PM"

d: 几日,两位数字,若不足则补零;从"01"至"31"

D: 星期几,3个英文字母,如:"Fri"

F: 月份,英文全名,如:"January"

PHP date()参数h: 12小时制的小时,从"01"至"12"

H: 24小时制的小时,从"00"至"23"

g: 12小时制的小时,不补零;从"1"至"12"

G: 24小时制的小时,不补零;从"0"至"23"

j: 几日,不足不被零;从"1"至"31"

l: 星期几,英文全名,如:"Friday"

m: 月份,两位数字,从"01"至"12"

n: 月份,两位数字,不补零;从"1"至"12"

M: 月份,3个英文字母;如:"Jan"

s: 秒;从"00"至"59"

PHP date()参数S: 字尾加英文序数,两个英文字母,如:"21th"

t: 指定月份的天数,从"28"至"31"

U: 总秒数

w: 数字型的星期几,从"0(星期天)"至"6(星期六)"

Y: 年,四位数字

y: 年,两位数字

PHP date()参数z: 一年中的第几天;从"1"至"366"


http://developer.51cto.com/art/200912/167897.htm


MySQL的unix_timestamp()函数


偶然看到MySQL的一个函数 unix_timestamp(),不明就里,于是就试验了一番。

    unix_timestamp()函数的作用是返回一个确切的时间点的UNIX时间戳,这个Unix时间戳是一个无符号整数。unix_timestamp()函数有两种重载形式,一是不带任何参数,另外一个是带有一个Date或DateTime或TimeStamp类型的参数。

    unix_timestamp(),返回自1970-1-1 8:00:00开始到当前系统时间为止的秒数。

    unix_timestamp(date),返回1970-1-1 8:00:00开始到date所代表的时间为止的秒数,对于早于1970-1-1 8:00:00的时间,总是返回 0 。

    注意:有些资料说是返回自 1970-1-1 0:00:00 以来的秒数,这是不对的。

        

mysql> select unix_timestamp();
         +------------------+
         | unix_timestamp() |
         +------------------+
         |       1303195194 |
         +------------------+
         1 row in set (0.00 sec)

         mysql> select unix_timestamp(current_timestamp());
         +-------------------------------------+
         | unix_timestamp(current_timestamp()) |
         +-------------------------------------+
         |                            1303195204 |
         +-------------------------------------+
         1 row in set (0.00 sec)

         mysql> select unix_timestamp('2011-4-19 12:00:00');
         +--------------------------------------+
         | unix_timestamp('2011-4-19 12:00:00') |
         +--------------------------------------+
         |                             1303185600 |
         +--------------------------------------+
         1 row in set (0.00 sec)

         mysql> select unix_timestamp('1970-1-1 6:00:00');     
         +------------------------------------+
         | unix_timestamp('1970-1-1 6:00:00') |
         +------------------------------------+
         |                                     0 |
         +------------------------------------+
         1 row in set (0.00 sec)

         mysql> select unix_timestamp('1970-1-1 8:00:00');
         +------------------------------------+
         | unix_timestamp('1970-1-1 8:00:00') |
         +------------------------------------+
         |                                     0 |
         +------------------------------------+
         1 row in set (0.00 sec)

         mysql> select unix_timestamp('1970-1-1 8:00:01');
         +------------------------------------+
         | unix_timestamp('1970-1-1 8:00:01') |
         +------------------------------------+
         |                                     1 |
         +------------------------------------+
         1 row in set (0.00 sec) 

         mysql> select unix_timestamp('1970-1-1 8:01:00');
         +------------------------------------+
         | unix_timestamp('1970-1-1 8:01:00') |
         +------------------------------------+
         |                                 60 |
         +------------------------------------+
         1 row in set (0.00 sec)

   

    了解了这个函数以后,就想如果知道了UNIX时间戳,如何换算成其对就的时间呢?于是想到了以下方法:

mysql> select date_add('1970-01-01 8:00:00',interval 1303191235 second);
         +-----------------------------------------------------------+
         | date_add('1970-01-01 8:00:00',interval 1303191235 second) |
         +-----------------------------------------------------------+
         | 2011-04-19 13:33:55                                          |
         +-----------------------------------------------------------+
         1 row in set (0.00 sec)

     呵呵,没有想到的是,MySQL也提供了一个函数,叫做 from_unixtime(unixtime),这个函数和上面那个函数表达式的结果完全相同:

mysql> select from_unixtime(1303191235);
         +---------------------------+
         | from_unixtime(1303191235) |
         +---------------------------+
         | 2011-04-19 13:33:55        |
         +---------------------------+
         1 row in set (0.00 sec)