mysql 时区与时间函数

--在mysql中可以直接使用sleep()函数,sysdate函数返回的是执行到当前函数的时间,而now函数返回的是执行sql的时间

mysql> SELECT now(),SYSDATE(), SLEEP(2),now(), sysdate() from dual;

+---------------------+---------------------+----------+---------------------+---------------------+

| now()               | SYSDATE()           | SLEEP(2) | now()               | sysdate()           |

+---------------------+---------------------+----------+---------------------+---------------------+

| 2015-05-29 14:19:43 | 2015-05-29 14:19:43 |        0 | 2015-05-29 14:19:43 | 2015-05-29 14:19:45 |

+---------------------+---------------------+----------+---------------------+---------------------+

1 row in set (2.00 sec)

--在mysql中不能对日期直接进行加减,要使用date_add,date_sub函数

mysql> select now(),date_add(now(),interval 1 day) as tomorrow,date_sub(now(),interval 1 daY) as yerterday,date_sub(now(),interval -1 day) yesterday2

from dual;

+---------------------+---------------------+---------------------+---------------------+

| now()               | tomorrow            | yerterday           | yesterday2          |

+---------------------+---------------------+---------------------+---------------------+

| 2015-05-29 14:40:52 | 2015-05-30 14:40:52 | 2015-05-28 14:40:52 | 2015-05-30 14:40:52 |

+---------------------+---------------------+---------------------+---------------------+

1 row in set (0.00 sec)

--mysql中weekday从周一开始计算,但周一为0,dayofweek从周日开始计算,从1开始

mysql> select weekday(@a),dayofweek(@a),dayname(@a);

+-------------+---------------+-------------+

| weekday(@a) | dayofweek(@a) | dayname(@a) |

+-------------+---------------+-------------+

|           4 |             6 | Friday      |

+-------------+---------------+-------------+

--格式化日期函数,获取日期时间类型与timestamp的不同

mysql> select date_format('2015-10-01 23:59:59','%Y-%m-%d %H:%i:%s');

 select from_unixtime(date_format('2015-10-01 23:59:59','%Y-%m-%d %H:%i:%s'));

 select timestamp('2015-10-01 23:59:59');

 

 select date_format('2015-10-01 23:59:59','%Y-%m-%d %H:%i:%s') from dual where now()>date_format('2015-10-01 23:59:59','%Y-%m-%d %H:%i:%s');

 

 

--修改时区,则相应的时间函数会返回不同的值

This includes the values displayed by functions such as NOW() or CURTIME(), and values stored in and retrieved from TIMESTAMP columns、

The current time zone setting does not affect values displayed by functions such as UTC_TIMESTAMP() or values in DATE, TIME, or DATETIME columns

 

mysql> SELECT NOW();

+---------------------+

| NOW()               |

+---------------------+

| 2016-02-03 09:46:33 |

+---------------------+

1 row in set (0.00 sec)

 

mysql> set time_zone='+07:00';

Query OK, 0 rows affected (0.00 sec)

--时间改变

mysql> SELECT NOW();

+---------------------+

| NOW()               |

+---------------------+

| 2016-02-03 08:46:35 |

+---------------------+

1 row in set (0.00 sec)

--将一个时区的时间转换成另一个时区的时间

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');

+-----------------------------------------------------+

| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') |

+-----------------------------------------------------+

| 2004-01-01 22:00:00                                 |

+-----------------------------------------------------+

1 row in set (0.00 sec)

--如果以下查询结果是null,则时区信息表里数据为空

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');

+-----------------------------------------------+

| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') |

+-----------------------------------------------+

| 2004-01-01 13:00:00                           |

+-----------------------------------------------+

1 row in set (0.00 sec)

mysql> SELECT COUNT(*) FROM mysql.time_zone_name;

+----------+

| COUNT(*) |

+----------+

|        0 |

+----------+

1 row in set (0.00 sec)

--导入时区信息到数据库表中

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p123456 mysql

--查看数据库的时区,如果 time_zone = SYSTEM ,则数据库的时区与操作系统相关

The operating system time affects the value that the MySQL server uses for times if its time zone is set to SYSTEM

mysql> show variables like '%time_zone%';

+------------------+--------+

| Variable_name    | Value  |

+------------------+--------+

| system_time_zone | CST    |

| time_zone        | SYSTEM |

+------------------+--------+

-- lc_time_names 变量控制着星期,月,日的显示方式

The locale indicated by the lc_time_names system variable controls the language used to display day and month names and abbreviations. 

This variable affects the output from the DATE_FORMAT(),DAYNAME(), and MONTHNAME() functions.

lc_time_names does not affect the STR_TO_DATE() or GET_FORMAT() function

mysql> SELECT @@lc_time_names;

+-----------------+

| @@lc_time_names |

+-----------------+

| en_US           |

+-----------------+

1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('2010-01-01','%W %a %M %b');

+-----------------------------------------+

| DATE_FORMAT('2010-01-01','%W %a %M %b') |

+-----------------------------------------+

| Friday Fri January Jan                  |

+-----------------------------------------+

1 row in set (0.00 sec)

时间: 2024-09-15 01:47:57

mysql 时区与时间函数的相关文章

Mysql日期和时间函数总结

一.MySQL 获得当前日期时间函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() current_time

mysql 日期和时间函数

日期和时间函数 本章论述了一些可用于操作时间值的函数.关于每个时间和日期类型具有的值域及指定值的有效格式,请参见11.3节,"日期和时间类型". 下面的例子使用了时间函数.以下询问选择了最近的 30天内所有带有date_col 值的记录: mysql> SELECT something FROM tbl_name     -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col; 注意,这个询问也能选择将来的日期

postgresql 时区与时间函数

--把时间戳转成epoch值 postgres=# select extract(epoch from now()); date_part ------------------ 1447898857.74524 (1 row) --把epoch 值转换回时间戳 postgres=# SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1447898857.74524 * INTERVAL '1 second'; ?column? -----------------

php Mysql日期和时间函数集合_php技巧

收集的比较全的Mysql日期和mysql时间函数DATE_FORMAT(date,format)  根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(January--December)  %W 星期名字(Sunday--Saturday)  %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等.)  %Y 年, 数字, 4 位  %y 年, 数字, 2 位  %a 缩写的星期名字(Sun--Sat)  %d 月份中的天数, 数字(00

MYSQL日期和时间函数

DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,--7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03');  -> 3 WEEKDAY(date)  返回日期date是星期几(0=星期一,1=星期二,--6= 星期天). mysql> select WEEKDAY('1997-10-04 22:23:00');  -> 5 mysql> select WEEKDAY('1997-11-05')

mYsql日期和时间函数不求人_Mysql

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型.  这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内:  mysql> SELECT something FROM table  WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date)  返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC

mysql 日期和时间函数_Mysql

mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday).索引值符合 ODBC 的标准. mysql> SELECT DAYOFWEEK('1998-02-03′); -> 3 WEEKDAY(date) 返回 date 的星期

Mysql日期和时间函数(1)

这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK('1998-02-03'); ->

MySQL 获得当前日期时间的函数小结_Mysql

1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime