`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)