偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用PostgreSQL數(shù)據(jù)庫日期類型的4個提示

數(shù)據(jù)庫 其他數(shù)據(jù)庫 數(shù)據(jù)庫運維 PostgreSQL
PostgreSQL你可以通過簡單調用PostgreSQL內置函數(shù)來實現(xiàn)數(shù)據(jù)庫日期類型功能。

當我們這些使用Rails的人看到例如5.weeks.from_nowor3.days.ago + 2.hours時并不會感到驚訝。同樣,PostgreSQL也可以做到,你可以通過簡單調用PostgreSQL內置函數(shù)來實現(xiàn)相同的功能。

當前時間/日期/時間戳

獲取當前時間的方式有很多種,在這之前我們需要知道以下兩種類型的區(qū)別:

  1. 總是返回當前的值 (clock_timestamp())
  2. 總是返回當前值,但在事務中它返回的是事務開始的時間(now())

讓我們看下面這個例子

  1. postgres=# BEGIN;  
  2. postgres=# SELECT now();  
  3.               now  
  4. -------------------------------  
  5.  2013-08-26 12:17:43.182331+02  
  6.  
  7. postgres=# SELECT now();  
  8.               now  
  9. -------------------------------  
  10.  2013-08-26 12:17:43.182331+02  
  11.  
  12. postgres=# SELECT clock_timestamp();  
  13.         clock_timestamp  
  14. -------------------------------  
  15.  2013-08-26 12:17:50.698413+02  
  16.  
  17. postgres=# SELECT clock_timestamp();  
  18.         clock_timestamp  
  19. -------------------------------  
  20.  2013-08-26 12:17:51.123905+02  

你會發(fā)現(xiàn),語句執(zhí)行時候clock_timestamp()的返回值每次都發(fā)生了改變,但是now()總是返回相同的值。當你需要考慮時區(qū)時,你應該特別注意這兩個函數(shù)差異。

時間區(qū)間:比如3天前

使用interval操作符你可以輕松的構建一個時間區(qū)間,例如

  • interval '1 day'
  • interval '5 days'
  • interval '5 days' + interval '3 hours'
  • interval '5 days 3 hours'

你可以看到,我們可以用interval操作符來簡單的進行數(shù)學運算,這特別適合于構建例如3天前這樣的時間區(qū)間,比如:

  1. postgres=# SELECT now() - interval '3 days';  
  2.            ?column?  
  3. -------------------------------  
  4.  2013-08-23 12:23:40.069717+02  

獲取星期幾

有些時候對于一個給定的時間,你僅僅只想知道的是這天是星期幾或者是它屬于那個世紀的更或者你只想知道它是一年中的第幾天。PostgreSQL中的extract()函數(shù)提供了這種功能。

如下例子是在8月26日 星期一進行測試的。

  1. postgres=# SELECT extract(DAY FROM now());  
  2.  date_part  
  3. -----------  
  4.         26  
  5.  
  6. postgres=# SELECT extract(DOW FROM now());  
  7.  date_part  
  8. -----------  
  9.          1  

 

extract()還有其他更強大的功能,詳情請參閱官方文檔,在這里只列舉了一小部分:

  • day
  • century
  • dow(day of week)
  • doy(day of year)
  • minute
  • month
  • year

時區(qū)轉換

有些時候,時區(qū)轉換對于特定時間在不同時區(qū)顯示特別有用。AT TIME ZONE提供了這種功能,它是如何做到的?我們將在一個事務中進行演示,因為同一事務中now()函數(shù)總是返回相同的值,從而我們可以很容易看到同一時間在不同時區(qū)顯示的差別。

  1. postgres=# BEGIN;  
  2. BEGIN 
  3. postgres=# SELECT now();  
  4.               now  
  5. -------------------------------  
  6.  2013-08-26 12:39:39.122218+02  
  7.  
  8. postgres=# SELECT now() AT TIME ZONE 'GMT';  
  9.           timezone  
  10. ----------------------------  
  11.  2013-08-26 10:39:39.122218  
  12.  
  13. postgres=# SELECT now() AT TIME ZONE 'GMT+1';  
  14.           timezone  
  15. ----------------------------  
  16.  2013-08-26 09:39:39.122218  
  17.  
  18. postgres=# SELECT now() AT TIME ZONE 'PST';  
  19.           timezone  
  20. ----------------------------  
  21.  2013-08-26 02:39:39.122218  

英文原文:4 Tips for Working with Dates in PostgreSQL

譯文鏈接:http://www.oschina.net/translate/4-tips-for-working-with-dates-in-postgresql

責任編輯:林師授 來源: OSCHINA 編譯
相關推薦

2022-10-12 13:33:25

PostgreSQL數(shù)據(jù)庫

2019-11-20 09:08:46

PostgreSQL數(shù)據(jù)庫

2010-05-26 10:15:11

MySQL數(shù)據(jù)庫

2011-08-25 09:56:05

PostgreSQLpg_ident.co

2024-03-04 10:48:15

PostgreSQL數(shù)據(jù)庫

2022-06-26 07:18:17

數(shù)據(jù)庫NodePostgreSQL

2024-09-10 08:00:00

PostgreSQL數(shù)據(jù)庫

2011-03-25 13:08:19

PostgreSQL數(shù)

2025-04-02 08:30:00

IvorySQLOraclePostgreSQL

2011-08-24 13:37:33

PostgreSQLpg_hba.conf

2010-05-13 15:30:47

2014-03-03 10:10:37

PostgreSQL數(shù)組

2021-09-28 09:25:05

NoSQL數(shù)據(jù)庫列式數(shù)據(jù)庫

2010-04-29 15:22:25

Oracle數(shù)據(jù)庫

2014-01-05 17:08:09

PostgreSQL數(shù)據(jù)類型

2017-10-13 15:06:18

數(shù)據(jù)庫PostgreSQL特性

2020-02-17 09:06:52

安全數(shù)據(jù)庫SQL

2023-06-28 11:14:18

2024-04-03 09:25:53

數(shù)據(jù)庫OraclePostgreSQL

2019-02-11 09:48:02

點贊
收藏

51CTO技術棧公眾號