比较数据库中的日期格式

来源:互联网 发布:mac 下的虚拟机性能差 编辑:程序博客网 时间:2024/05/01 23:26
数据库中的时间类型为:
`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)

0 0
原创粉丝点击