自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)運(yùn)維 PostgreSQL
PostgreSQL你可以通過(guò)簡(jiǎn)單調(diào)用PostgreSQL內(nèi)置函數(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)日期類(lèi)型功能。

當(dāng)我們這些使用Rails的人看到例如5.weeks.from_nowor3.days.ago + 2.hours時(shí)并不會(huì)感到驚訝。同樣,PostgreSQL也可以做到,你可以通過(guò)簡(jiǎn)單調(diào)用PostgreSQL內(nèi)置函數(shù)來(lái)實(shí)現(xiàn)相同的功能。

當(dāng)前時(shí)間/日期/時(shí)間戳

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

  1. 總是返回當(dāng)前的值 (clock_timestamp())
  2. 總是返回當(dāng)前值,但在事務(wù)中它返回的是事務(wù)開(kāi)始的時(shí)間(now())

讓我們看下面這個(gè)例子

  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  

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

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

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

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

你可以看到,我們可以用interval操作符來(lái)簡(jiǎn)單的進(jìn)行數(shù)學(xué)運(yùn)算,這特別適合于構(gòu)建例如3天前這樣的時(shí)間區(qū)間,比如:

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

獲取星期幾

有些時(shí)候?qū)τ谝粋€(gè)給定的時(shí)間,你僅僅只想知道的是這天是星期幾或者是它屬于那個(gè)世紀(jì)的更或者你只想知道它是一年中的第幾天。PostgreSQL中的extract()函數(shù)提供了這種功能。

如下例子是在8月26日 星期一進(jìn)行測(cè)試的。

  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()還有其他更強(qiáng)大的功能,詳情請(qǐng)參閱官方文檔,在這里只列舉了一小部分:

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

時(shí)區(qū)轉(zhuǎn)換

有些時(shí)候,時(shí)區(qū)轉(zhuǎn)換對(duì)于特定時(shí)間在不同時(shí)區(qū)顯示特別有用。AT TIME ZONE提供了這種功能,它是如何做到的?我們將在一個(gè)事務(wù)中進(jìn)行演示,因?yàn)橥皇聞?wù)中now()函數(shù)總是返回相同的值,從而我們可以很容易看到同一時(shí)間在不同時(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

責(zé)任編輯:林師授 來(lái)源: OSCHINA 編譯
相關(guān)推薦

2022-10-12 13:33:25

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

2019-11-20 09:08:46

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

2010-05-26 10:15:11

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

2011-08-25 09:56:05

PostgreSQLpg_ident.co

2024-03-04 10:48:15

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

2024-09-10 08:00:00

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

2022-06-26 07:18:17

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

2014-03-03 10:10:37

PostgreSQL數(shù)組

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

2021-09-28 09:25:05

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

2014-01-05 17:08:09

PostgreSQL數(shù)據(jù)類(lèi)型

2010-04-29 15:22:25

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

2017-10-13 15:06:18

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

2024-04-03 09:25:53

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

2023-06-28 11:14:18

2019-02-11 09:48:02

2023-03-29 08:00:00

PostgreSQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)