麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > PostgreSQL > 正文

在PostgreSQL中使用日期類型時一些需要注意的地方

2020-10-29 21:49:57
字體:
來源:轉載
供稿:網友

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

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

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

讓我們看下面這個例子
 

postgres=# BEGIN;postgres=# SELECT now();       now------------------------------- 2013-08-26 12:17:43.182331+02 postgres=# SELECT now();       now------------------------------- 2013-08-26 12:17:43.182331+02 postgres=# SELECT clock_timestamp();    clock_timestamp------------------------------- 2013-08-26 12:17:50.698413+02 postgres=# SELECT clock_timestamp();    clock_timestamp------------------------------- 2013-08-26 12:17:51.123905+02

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

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

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

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

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

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

獲取星期幾

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

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

postgres=# SELECT extract(DAY FROM now()); date_part-----------    26 postgres=# SELECT extract(DOW FROM now()); date_part-----------     1

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

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


時區(qū)轉換

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

postgres=# BEGIN;BEGINpostgres=# SELECT now();       now------------------------------- 2013-08-26 12:39:39.122218+02 postgres=# SELECT now() AT TIME ZONE 'GMT';     timezone---------------------------- 2013-08-26 10:39:39.122218 postgres=# SELECT now() AT TIME ZONE 'GMT+1';     timezone---------------------------- 2013-08-26 09:39:39.122218 postgres=# SELECT now() AT TIME ZONE 'PST';     timezone---------------------------- 2013-08-26 02:39:39.122218

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 看全色黄大色黄大片女图片 | 夜间福利视频 | 欧美日韩亚洲成人 | 国产女厕一区二区三区在线视 | 毛片网站网址 | 毛片在线不卡 | 欧美成人精品不卡视频在线观看 | 男人午夜小视频 | 亚洲特黄a级毛片在线播放 久久久入口 | 亚洲小视频在线 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 国产99久久久久久免费看农村 | 成人在线视频免费 | 91九色视频在线播放 | 成年免费看 | 中文字幕在线网 | 欧美人成在线 | 黄色电影免费网址 | 91久久国产综合精品女同国语 | 吾色视频| 久久国产乱子伦精品 | 久久成年人视频 | 国产一区二区三区精品在线观看 | 99精品视频在线观看免费播放 | 欧美a视频| 午夜热门福利 | www.9191.com | 狠狠干最新网址 | 精品国产一区二区三区成人影院 | 久久影城 | 特一级黄色毛片 | 高潮娇喘嗯啊~文字 | 一级黄色淫片 | 精品国产乱码久久久久久丨区2区 | 一区二区三区日韩在线 | 91热久久免费频精品黑人99 | 国产精品免费成人 | 亚洲天堂在线电影 | 精品在线视频播放 | 国产午夜精品一区 | 精品人人人人 |