1. 程式人生 > >MySQL 按照日期格式查詢帶有時間戳資料

MySQL 按照日期格式查詢帶有時間戳資料

按照日期格式查詢帶有時間戳資料
一般在MSQL資料庫中的時間都是以時間戳的格式來儲存時間的,但是對於我們來說,時間戳格式具體表示的是什麼時間,我們很難一眼看出來,所以當我們要具體查詢某一個時間或時間段的資料時,就要進行日期到時間戳的轉換。
我們常會用到這兩個函式:
FROM_UNIXTIME()UNIX_TIMESTAMP()函式
1. FROM_UNIXTIME(unix_timestamp,format)函式:
FROM_UNIXTIME(unix_timestamp,format)時間函式中unix_timestamp可以是欄位名,也可以直接是Unix 時間戳,format主要是將返回值格式化。

2.UNIX_TIMESTAMP()函式
UNIX_TIMESTAMP()是與之相對正好相反的時間函式
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
  若無引數呼叫,則返回一個 Unix timestamp (‘1970-01-01 00:00:00’ GMT 之後的秒數) 作為無符號整數。若用date 來呼叫 UNIX_TIMESTAMP(),它會將引數值以’1970-01-01 00:00:00’ GMT後的秒數的形式返回。date 可以是一個 DATE 字串、一個 DATETIME字串、一個 TIMESTAMP或一個當地時間的YYMMDD 或YYYMMDD格式的數字。
  下面有幾種情況下的使用:
(1)、查詢當前系統的時間戳

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

(2)、查詢當前系統時間格式的時間

mysql> select from_unixtime(unix_timestamp());
+---------------------------------+
| from_unixtime(unix_timestamp()) |
+---------------------------------+
| 2016-12-17 14:59:24 | +---------------------------------+ 1 row in set (0.00 sec)

(3)、查詢某一固定時間的時間戳

mysql> select unix_timestamp('2016-12-17 14:59:24');
+---------------------------------------+
| unix_timestamp('2016-12-17 14:59:24') |
+---------------------------------------+
|                            1481957964 |
+---------------------------------------+
1 row in set (0.00 sec)

(4)、查詢某一時間戳的固定時間

mysql> select from_unixtime('1481957964');
+-----------------------------+
| from_unixtime('1481957964') |
+-----------------------------+
| 2016-12-17 14:59:24         |
+-----------------------------+
1 row in set (0.00 sec)

(5)、查詢某一時間戳的具體時間按固定格式輸出

mysql> select from_unixtime('1481957964','%Y/%m/%d %H:%i:%s');
+-------------------------------------------------+
| from_unixtime('1481957964','%Y/%m/%d %H:%i:%s') |
+-------------------------------------------------+
| 2016/12/17 14:59:24                             |
+-------------------------------------------------+
1 row in set (0.00 sec)

(6)、查詢某個資料的建立時間大於某個時間段比如(2012-07-08 00:00:11)的資料,同時顯示具體的建立時間:

mysql> SELECT FROM_UNIXTIME(createtime) as '建立時間',FROM_UNIXTIME(`last_modified`) as '更新時間
    -> from orders where createtime > UNIX_TIMESTAMP('2016-07-08 00:00:11');
+---------------------+---------------------+
| 建立時間                   | 更新時間                   |
+---------------------+---------------------+
| 2016-07-08 14:25:54 | 2016-07-08 14:31:10 |
| 2016-07-08 15:37:08 | 2016-07-10 17:26:15 |
| 2016-07-10 17:25:42 | 2016-07-10 17:26:58 |
+---------------------+---------------------+
3 rows in set (0.00 sec)

(7)mysql 獲取當前時間為:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-06-15 16:40:57 |
+---------------------+
1 row in set (0.00 sec)

(8)mysql 獲取當前時間戳為:

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