国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

direktori cari
前言 何為PostgreSQL? PostgreSQL簡史 格式約定 更多信息 臭蟲匯報(bào)指導(dǎo) I. 教程 章1. 從頭開始 1.1. 安裝 1.2. 體系基本概念 1.3. 創(chuàng)建一個(gè)數(shù)據(jù)庫 1.4. 訪問數(shù)據(jù)庫 章2. SQL語言 2.1. 介紹 2.2. 概念 2.3. 創(chuàng)建新表 2.4. 向表中添加行 2.5. 查詢一個(gè)表 2.6. 表間鏈接 2.7. 聚集函數(shù) 2.8. 更新 2.9. 刪除 章3. 高級(jí)特性 3.1. 介紹 3.2. 視圖 3.3. 外鍵 3.4. 事務(wù) 3.5. 窗口函數(shù) 3.6. 繼承 3.7. 結(jié)論 II. SQL語言 章4. SQL語法 4.1. 詞法結(jié)構(gòu) 4.2. 值表達(dá)式 4.3. 調(diào)用函數(shù) 章5. 數(shù)據(jù)定義 5.1. 表的基本概念 5.2. 缺省值 5.3. 約束 5.4. 系統(tǒng)字段 5.5. 修改表 5.6. 權(quán)限 5.7. 模式 5.8. 繼承 5.9. 分區(qū) 5.10. 其它數(shù)據(jù)庫對(duì)象 5.11. 依賴性跟蹤 章 6. 數(shù)據(jù)操作 6.1. 插入數(shù)據(jù) 6.2. 更新數(shù)據(jù) 6.3. 刪除數(shù)據(jù) 章7. 查詢 7.1. 概述 7.2. 表表達(dá)式 7.3. 選擇列表 7.4. 組合查詢 7.5. 行排序 7.6. LIMIT和OFFSET 7.7. VALUES列表 7.8. WITH的查詢(公用表表達(dá)式) 章8. 數(shù)據(jù)類型 8.1. 數(shù)值類型 8.2. 貨幣類型 8.3. 字符類型 8.4. 二進(jìn)制數(shù)據(jù)類型 8.5. 日期/時(shí)間類型 8.6. 布爾類型 8.7. 枚舉類型 8.8. 幾何類型 8.9. 網(wǎng)絡(luò)地址類型 8.10. 位串類型 8.11. 文本搜索類型 8.12. UUID類型 8.13. XML類型 8.14. 數(shù)組 8.15. 復(fù)合類型 8.16. 對(duì)象標(biāo)識(shí)符類型 8.17. 偽類型 章 9. 函數(shù)和操作符 9.1. 邏輯操作符 9.2. 比較操作符 9.3. 數(shù)學(xué)函數(shù)和操作符 9.4. 字符串函數(shù)和操作符 9.5. 二進(jìn)制字符串函數(shù)和操作符 9.6. 位串函數(shù)和操作符 9.7. 模式匹配 9.8. 數(shù)據(jù)類型格式化函數(shù) 9.9. 時(shí)間/日期函數(shù)和操作符 9.10. 支持枚舉函數(shù) 9.11. 幾何函數(shù)和操作符 9.12. 網(wǎng)絡(luò)地址函數(shù)和操作符 9.13. 文本檢索函數(shù)和操作符 9.14. XML函數(shù) 9.15. 序列操作函數(shù) 9.16. 條件表達(dá)式 9.17. 數(shù)組函數(shù)和操作符 9.18. 聚合函數(shù) 9.19. 窗口函數(shù) 9.20. 子查詢表達(dá)式 9.21. 行和數(shù)組比較 9.22. 返回集合的函數(shù) 9.23. 系統(tǒng)信息函數(shù) 9.24. 系統(tǒng)管理函數(shù) 9.25. 觸發(fā)器函數(shù) 章10. 類型轉(zhuǎn)換 10.3. 函數(shù) 10.2. 操作符 10.1. 概述 10.4. 值存儲(chǔ) 10.5. UNION 章11. 索引 11.1. 介紹 11.2. 索引類型 11.3. 多字段索引 11.4. 索引和ORDER BY 11.5. 組合多個(gè)索引 11.6. 唯一索引 11.7. 表達(dá)式上的索引 11.8. 部分索引 11.9. 操作類和操作簇 11.10. 檢查索引的使用 章12. Full Text Search 12.1. Introduction 12.2. Tables and Indexes 12.3. Controlling Text Search 12.4. Additional Features 12.5. Parsers 12.6. Dictionaries 12.7. Configuration Example 12.8. Testing and Debugging Text Search 12.9. GiST and GIN Index Types 12.10. psql Support 12.11. Limitations 12.12. Migration from Pre-8.3 Text Search 章13. 并發(fā)控制 13.1. 介紹 13.2. 事務(wù)隔離 13.3. 明確鎖定 13.4. 應(yīng)用層數(shù)據(jù)完整性檢查 13.5. 鎖和索引 章14. 性能提升技巧 14.1. 使用EXPLAIN 14.2. 規(guī)劃器使用的統(tǒng)計(jì)信息 14.3. 用明確的JOIN語句控制規(guī)劃器 14.4. 向數(shù)據(jù)庫中添加記錄 14.5. 非持久性設(shè)置 III. 服務(wù)器管理 章15. 安裝指導(dǎo) 15.1. 簡版 15.2. 要求 15.3. 獲取源碼 15.4. 升級(jí) 15.5. 安裝過程 15.6. 安裝后的設(shè)置 15.7. 支持的平臺(tái) 15.8. 特殊平臺(tái)的要求 章16. Installation from Source Code on Windows 16.1. Building with Visual C++ or the Platform SDK 16.2. Building libpq with Visual C++ or Borland C++ 章17. 服務(wù)器安裝和操作 17.1. PostgreSQL用戶帳戶 17.2. 創(chuàng)建數(shù)據(jù)庫集群 17.3. 啟動(dòng)數(shù)據(jù)庫服務(wù)器 17.4. 管理內(nèi)核資源 17.5. 關(guān)閉服務(wù) 17.6. 防止服務(wù)器欺騙 17.7. 加密選項(xiàng) 17.8. 用SSL進(jìn)行安全的TCP/IP連接 17.9. Secure TCP/IP Connections with SSH Tunnels 章18. 服務(wù)器配置 18.1. 設(shè)置參數(shù) 18.2. 文件位置 18.3. 連接和認(rèn)證 18.4. 資源消耗 18.5. 預(yù)寫式日志 18.6. 查詢規(guī)劃 18.7. 錯(cuò)誤報(bào)告和日志 18.8. 運(yùn)行時(shí)統(tǒng)計(jì) 18.9. 自動(dòng)清理 18.10. 客戶端連接缺省 18.12. 版本和平臺(tái)兼容性 18.11. 鎖管理 18.13. 預(yù)置選項(xiàng) 18.14. 自定義的選項(xiàng) 18.15. 開發(fā)人員選項(xiàng) 18.16. 短選項(xiàng) 章19. 用戶認(rèn)證 19.1. pg_hba.conf 文件 19.2. 用戶名映射 19.3. 認(rèn)證方法 19.4. 用戶認(rèn)證 章20. 數(shù)據(jù)庫角色和權(quán)限 20.1. 數(shù)據(jù)庫角色 20.2. 角色屬性 20.3. 權(quán)限 20.4. 角色成員 20.5. 函數(shù)和觸發(fā)器 章21. 管理數(shù)據(jù)庫 21.1. 概述 21.2. 創(chuàng)建一個(gè)數(shù)據(jù)庫 21.3. 臨時(shí)庫 21.4. 數(shù)據(jù)庫配置 21.5. 刪除數(shù)據(jù)庫 21.6. 表空間 章22. 本土化 22.1. 區(qū)域支持 22.2. 字符集支持 章23. 日常數(shù)據(jù)庫維護(hù)工作 23.1. Routine Vacuuming日常清理 23.2. 經(jīng)常重建索引 23.3. 日志文件維護(hù) 章24. 備份和恢復(fù) 24.1. SQL轉(zhuǎn)儲(chǔ) 24.2. 文件系統(tǒng)級(jí)別的備份 24.3. 在線備份以及即時(shí)恢復(fù)(PITR) 24.4. 版本間遷移 章25. 高可用性與負(fù)載均衡,復(fù)制 25.1. 不同解決方案的比較 25.2. 日志傳送備份服務(wù)器 25.3. 失效切換 25.4. 日志傳送的替代方法 25.5. 熱備 章26. 恢復(fù)配置 26.1. 歸檔恢復(fù)設(shè)置 26.2. 恢復(fù)目標(biāo)設(shè)置 26.3. 備服務(wù)器設(shè)置 章27. 監(jiān)控?cái)?shù)據(jù)庫的活動(dòng) 27.1. 標(biāo)準(zhǔn)Unix工具 27.2. 統(tǒng)計(jì)收集器 27.3. 查看鎖 27.4. 動(dòng)態(tài)跟蹤 章28. 監(jiān)控磁盤使用情況 28.1. 判斷磁盤的使用量 28.2. 磁盤滿導(dǎo)致的失效 章29. 可靠性和預(yù)寫式日志 29.1. 可靠性 29.2. 預(yù)寫式日志(WAL) 29.3. 異步提交 29.4. WAL配置 29.5. WAL內(nèi)部 章30. Regression Tests 30.1. Running the Tests 30.2. Test Evaluation 30.3. Variant Comparison Files 30.4. Test Coverage Examination IV. 客戶端接口 章31. libpq-C庫 31.1. 數(shù)據(jù)庫聯(lián)接函數(shù) 31.2. 連接狀態(tài)函數(shù) 31.3. 命令執(zhí)行函數(shù) 31.4. 異步命令處理 31.5. 取消正在處理的查詢 31.6. 捷徑接口 31.7. 異步通知 31.8. 與COPY命令相關(guān)的函數(shù) 31.9. Control Functions 控制函數(shù) 31.10. 其他函數(shù) 31.11. 注意信息處理 31.12. 事件系統(tǒng) 31.13. 環(huán)境變量 31.14. 口令文件 31.15. 連接服務(wù)的文件 31.16. LDAP查找連接參數(shù) 31.17. SSL支持 31.18. 在多線程程序里的行為 31.19. 制作libpq程序 31.20. 例子程序 章32. 大對(duì)象 32.1. 介紹 32.2. 實(shí)現(xiàn)特點(diǎn) 32.3. 客戶端接口 32.4. 服務(wù)器端函數(shù) 32.5. 例子程序 章33. ECPG - Embedded SQL in C 33.1. The Concept 33.2. Connecting to the Database Server 33.3. Closing a Connection 33.4. Running SQL Commands 33.5. Choosing a Connection 33.6. Using Host Variables 33.7. Dynamic SQL 33.8. pgtypes library 33.9. Using Descriptor Areas 33.10. Informix compatibility mode 33.11. Error Handling 33.12. Preprocessor directives 33.13. Processing Embedded SQL Programs 33.14. Library Functions 33.15. Internals 章34. 信息模式 34.1. 關(guān)于這個(gè)模式 34.2. 數(shù)據(jù)類型 34.3. information_schema_catalog_name 34.4. administrable_role_authorizations 34.5. applicable_roles 34.6. attributes 34.7. check_constraint_routine_usage 34.8. check_constraints 34.9. column_domain_usage 34.10. column_privileges 34.11. column_udt_usage 34.12. 字段 34.13. constraint_column_usage 34.14. constraint_table_usage 34.15. data_type_privileges 34.16. domain_constraints 34.18. domains 34.17. domain_udt_usage 34.19. element_types 34.20. enabled_roles 34.21. foreign_data_wrapper_options 34.22. foreign_data_wrappers 34.23. foreign_server_options 34.24. foreign_servers 34.25. key_column_usage 34.26. parameters 34.27. referential_constraints 34.28. role_column_grants 34.29. role_routine_grants 34.30. role_table_grants 34.31. role_usage_grants 34.32. routine_privileges 34.33. routines 34.34. schemata 34.35. sequences 34.36. sql_features 34.37. sql_implementation_info 34.38. sql_languages 34.39. sql_packages 34.40. sql_parts 34.41. sql_sizing 34.42. sql_sizing_profiles 34.43. table_constraints 34.44. table_privileges 34.45. tables 34.46. triggered_update_columns 34.47. 觸發(fā)器 34.48. usage_privileges 34.49. user_mapping_options 34.50. user_mappings 34.51. view_column_usage 34.52. view_routine_usage 34.53. view_table_usage 34.54. 視圖 V. 服務(wù)器端編程 章35. 擴(kuò)展SQL 35.1. 擴(kuò)展性是如何實(shí)現(xiàn)的 35.2. PostgreSQL類型系統(tǒng) 35.3. User-Defined Functions 35.4. Query Language (SQL) Functions 35.5. Function Overloading 35.6. Function Volatility Categories 35.7. Procedural Language Functions 35.8. Internal Functions 35.9. C-Language Functions 35.10. User-Defined Aggregates 35.11. User-Defined Types 35.12. User-Defined Operators 35.13. Operator Optimization Information 35.14. Interfacing Extensions To Indexes 35.15. 用C++擴(kuò)展 章36. 觸發(fā)器 36.1. 觸發(fā)器行為概述 36.3. 用 C 寫觸發(fā)器 36.2. 數(shù)據(jù)改變的可視性 36.4. 一個(gè)完整的例子 章37. 規(guī)則系統(tǒng) 37.1. The Query Tree 37.2. 視圖和規(guī)則系統(tǒng) 37.3. 在INSERT,UPDATE和DELETE上的規(guī)則 37.4. 規(guī)則和權(quán)限 37.5. 規(guī)則和命令狀態(tài) 37.6. 規(guī)則與觸發(fā)器得比較 章38. Procedural Languages 38.1. Installing Procedural Languages 章39. PL/pgSQL - SQL過程語言 39.1. 概述 39.2. PL/pgSQL的結(jié)構(gòu) 39.3. 聲明 39.4. 表達(dá)式 39.5. 基本語句 39.6. 控制結(jié)構(gòu) 39.7. 游標(biāo) 39.8. 錯(cuò)誤和消息 39.9. 觸發(fā)器過程 39.10. PL/pgSQL Under the Hood 39.11. 開發(fā)PL/pgSQL的一些提示 39.12. 從OraclePL/SQL 進(jìn)行移植 章40. PL/Tcl - Tcl Procedural Language 40.1. Overview 40.2. PL/Tcl Functions and Arguments 40.3. Data Values in PL/Tcl 40.4. Global Data in PL/Tcl 40.5. Database Access from PL/Tcl 40.6. Trigger Procedures in PL/Tcl 40.7. Modules and the unknown command 40.8. Tcl Procedure Names 章41. PL/Perl - Perl Procedural Language 41.1. PL/Perl Functions and Arguments 41.2. Data Values in PL/Perl 41.3. Built-in Functions 41.4. Global Values in PL/Perl 41.6. PL/Perl Triggers 41.5. Trusted and Untrusted PL/Perl 41.7. PL/Perl Under the Hood 章42. PL/Python - Python Procedural Language 42.1. Python 2 vs. Python 3 42.2. PL/Python Functions 42.3. Data Values 42.4. Sharing Data 42.5. Anonymous Code Blocks 42.6. Trigger Functions 42.7. Database Access 42.8. Utility Functions 42.9. Environment Variables 章43. Server Programming Interface 43.1. Interface Functions Spi-spi-connect Spi-spi-finish Spi-spi-push Spi-spi-pop Spi-spi-execute Spi-spi-exec Spi-spi-execute-with-args Spi-spi-prepare Spi-spi-prepare-cursor Spi-spi-prepare-params Spi-spi-getargcount Spi-spi-getargtypeid Spi-spi-is-cursor-plan Spi-spi-execute-plan Spi-spi-execute-plan-with-paramlist Spi-spi-execp Spi-spi-cursor-open Spi-spi-cursor-open-with-args Spi-spi-cursor-open-with-paramlist Spi-spi-cursor-find Spi-spi-cursor-fetch Spi-spi-cursor-move Spi-spi-scroll-cursor-fetch Spi-spi-scroll-cursor-move Spi-spi-cursor-close Spi-spi-saveplan 43.2. Interface Support Functions Spi-spi-fname Spi-spi-fnumber Spi-spi-getvalue Spi-spi-getbinval Spi-spi-gettype Spi-spi-gettypeid Spi-spi-getrelname Spi-spi-getnspname 43.3. Memory Management Spi-spi-palloc Spi-realloc Spi-spi-pfree Spi-spi-copytuple Spi-spi-returntuple Spi-spi-modifytuple Spi-spi-freetuple Spi-spi-freetupletable Spi-spi-freeplan 43.4. Visibility of Data Changes 43.5. Examples VI. 參考手冊 I. SQL命令 Sql-abort Sql-alteraggregate Sql-alterconversion Sql-alterdatabase Sql-alterdefaultprivileges Sql-alterdomain Sql-alterforeigndatawrapper Sql-alterfunction Sql-altergroup Sql-alterindex Sql-alterlanguage Sql-alterlargeobject Sql-alteroperator Sql-alteropclass Sql-alteropfamily Sql-alterrole Sql-alterschema Sql-altersequence Sql-alterserver Sql-altertable Sql-altertablespace Sql-altertsconfig Sql-altertsdictionary Sql-altertsparser Sql-altertstemplate Sql-altertrigger Sql-altertype Sql-alteruser Sql-alterusermapping Sql-alterview Sql-analyze Sql-begin Sql-checkpoint Sql-close Sql-cluster Sql-comment Sql-commit Sql-commit-prepared Sql-copy Sql-createaggregate Sql-createcast Sql-createconstraint Sql-createconversion Sql-createdatabase Sql-createdomain Sql-createforeigndatawrapper Sql-createfunction Sql-creategroup Sql-createindex Sql-createlanguage Sql-createoperator Sql-createopclass Sql-createopfamily Sql-createrole Sql-createrule Sql-createschema Sql-createsequence Sql-createserver Sql-createtable Sql-createtableas Sql-createtablespace Sql-createtsconfig Sql-createtsdictionary Sql-createtsparser Sql-createtstemplate Sql-createtrigger Sql-createtype Sql-createuser Sql-createusermapping Sql-createview Sql-deallocate Sql-declare Sql-delete Sql-discard Sql-do Sql-dropaggregate Sql-dropcast Sql-dropconversion Sql-dropdatabase Sql-dropdomain Sql-dropforeigndatawrapper Sql-dropfunction Sql-dropgroup Sql-dropindex Sql-droplanguage Sql-dropoperator Sql-dropopclass Sql-dropopfamily Sql-drop-owned Sql-droprole Sql-droprule Sql-dropschema Sql-dropsequence Sql-dropserver Sql-droptable Sql-droptablespace Sql-droptsconfig Sql-droptsdictionary Sql-droptsparser Sql-droptstemplate Sql-droptrigger Sql-droptype Sql-dropuser Sql-dropusermapping Sql-dropview Sql-end Sql-execute Sql-explain Sql-fetch Sql-grant Sql-insert Sql-listen Sql-load Sql-lock Sql-move Sql-notify Sql-prepare Sql-prepare-transaction Sql-reassign-owned Sql-reindex Sql-release-savepoint Sql-reset Sql-revoke Sql-rollback Sql-rollback-prepared Sql-rollback-to Sql-savepoint Sql-select Sql-selectinto Sql-set Sql-set-constraints Sql-set-role Sql-set-session-authorization Sql-set-transaction Sql-show Sql-start-transaction Sql-truncate Sql-unlisten Sql-update Sql-vacuum Sql-values II. 客戶端應(yīng)用程序 App-clusterdb App-createdb App-createlang App-createuser App-dropdb App-droplang App-dropuser App-ecpg App-pgconfig App-pgdump App-pg-dumpall App-pgrestore App-psql App-reindexdb App-vacuumdb III. PostgreSQL服務(wù)器應(yīng)用程序 App-initdb App-pgcontroldata App-pg-ctl App-pgresetxlog App-postgres App-postmaster VII. 內(nèi)部 章44. PostgreSQL內(nèi)部概覽 44.1. 查詢路徑 44.2. 連接是如何建立起來的 44.3. 分析器階段 44.4. ThePostgreSQL規(guī)則系統(tǒng) 44.5. 規(guī)劃器/優(yōu)化器 44.6. 執(zhí)行器 章45. 系統(tǒng)表 45.1. 概述 45.2. pg_aggregate 45.3. pg_am 45.4. pg_amop 45.5. pg_amproc 45.6. pg_attrdef 45.7. pg_attribute 45.8. pg_authid 45.9. pg_auth_members 45.10. pg_cast 45.11. pg_class 45.12. pg_constraint 45.13. pg_conversion 45.14. pg_database 45.15. pg_db_role_setting 45.16. pg_default_acl 45.17. pg_depend 45.18. pg_description 45.19. pg_enum 45.20. pg_foreign_data_wrapper 45.21. pg_foreign_server 45.22. pg_index 45.23. pg_inherits 45.24. pg_language 45.25. pg_largeobject 45.26. pg_largeobject_metadata 45.27. pg_namespace 45.28. pg_opclass 45.29. pg_operator 45.30. pg_opfamily 45.31. pg_pltemplate 45.32. pg_proc 45.33. pg_rewrite 45.34. pg_shdepend 45.35. pg_shdescription 45.36. pg_statistic 45.37. pg_tablespace 45.38. pg_trigger 45.39. pg_ts_config 45.40. pg_ts_config_map 45.41. pg_ts_dict 45.42. pg_ts_parser 45.43. pg_ts_template 45.44. pg_type 45.45. pg_user_mapping 45.46. System Views 45.47. pg_cursors 45.48. pg_group 45.49. pg_indexes 45.50. pg_locks 45.51. pg_prepared_statements 45.52. pg_prepared_xacts 45.53. pg_roles 45.54. pg_rules 45.55. pg_settings 45.56. pg_shadow 45.57. pg_stats 45.58. pg_tables 45.59. pg_timezone_abbrevs 45.60. pg_timezone_names 45.61. pg_user 45.62. pg_user_mappings 45.63. pg_views 章46. Frontend/Backend Protocol 46.1. Overview 46.2. Message Flow 46.3. Streaming Replication Protocol 46.4. Message Data Types 46.5. Message Formats 46.6. Error and Notice Message Fields 46.7. Summary of Changes since Protocol 2.0 47. PostgreSQL Coding Conventions 47.1. Formatting 47.2. Reporting Errors Within the Server 47.3. Error Message Style Guide 章48. Native Language Support 48.1. For the Translator 48.2. For the Programmer 章49. Writing A Procedural Language Handler 章50. Genetic Query Optimizer 50.1. Query Handling as a Complex Optimization Problem 50.2. Genetic Algorithms 50.3. Genetic Query Optimization (GEQO) in PostgreSQL 50.4. Further Reading 章51. 索引訪問方法接口定義 51.1. 索引的系統(tǒng)表記錄 51.2. 索引訪問方法函數(shù) 51.3. 索引掃描 51.4. 索引鎖的考量 51.5. 索引唯一性檢查 51.6. 索引開銷估計(jì)函數(shù) 章52. GiST Indexes 52.1. Introduction 52.2. Extensibility 52.3. Implementation 52.4. Examples 52.5. Crash Recovery 章53. GIN Indexes 53.1. Introduction 53.2. Extensibility 53.3. Implementation 53.4. GIN tips and tricks 53.5. Limitations 53.6. Examples 章54. 數(shù)據(jù)庫物理存儲(chǔ) 54.1. 數(shù)據(jù)庫文件布局 54.2. TOAST 54.3. 自由空間映射 54.4. 可見映射 54.5. 數(shù)據(jù)庫分頁文件 章55. BKI后端接口 55.1. BKI 文件格式 55.2. BKI命令 55.3. 系統(tǒng)初始化的BKI文件的結(jié)構(gòu) 55.4. 例子 章56. 規(guī)劃器如何使用統(tǒng)計(jì)信息 56.1. 行預(yù)期的例子 VIII. 附錄 A. PostgreSQL錯(cuò)誤代碼 B. 日期/時(shí)間支持 B.1. 日期/時(shí)間輸入解析 B.2. 日期/時(shí)間關(guān)鍵字 B.3. 日期/時(shí)間配置文件 B.4. 日期單位的歷史 C. SQL關(guān)鍵字 D. SQL Conformance D.1. Supported Features D.2. Unsupported Features E. Release Notes Release-0-01 Release-0-02 Release-0-03 Release-1-0 Release-1-01 Release-1-02 Release-1-09 Release-6-0 Release-6-1 Release-6-1-1 Release-6-2 Release-6-2-1 Release-6-3 Release-6-3-1 Release-6-3-2 Release-6-4 Release-6-4-1 Release-6-4-2 Release-6-5 Release-6-5-1 Release-6-5-2 Release-6-5-3 Release-7-0 Release-7-0-1 Release-7-0-2 Release-7-0-3 Release-7-1 Release-7-1-1 Release-7-1-2 Release-7-1-3 Release-7-2 Release-7-2-1 Release-7-2-2 Release-7-2-3 Release-7-2-4 Release-7-2-5 Release-7-2-6 Release-7-2-7 Release-7-2-8 Release-7-3 Release-7-3-1 Release-7-3-10 Release-7-3-11 Release-7-3-12 Release-7-3-13 Release-7-3-14 Release-7-3-15 Release-7-3-16 Release-7-3-17 Release-7-3-18 Release-7-3-19 Release-7-3-2 Release-7-3-20 Release-7-3-21 Release-7-3-3 Release-7-3-4 Release-7-3-5 Release-7-3-6 Release-7-3-7 Release-7-3-8 Release-7-3-9 Release-7-4 Release-7-4-1 Release-7-4-10 Release-7-4-11 Release-7-4-12 Release-7-4-13 Release-7-4-14 Release-7-4-15 Release-7-4-16 Release-7-4-17 Release-7-4-18 Release-7-4-19 Release-7-4-2 Release-7-4-20 Release-7-4-21 Release-7-4-22 Release-7-4-23 Release-7-4-24 Release-7-4-25 Release-7-4-26 Release-7-4-27 Release-7-4-28 Release-7-4-29 Release-7-4-3 Release-7-4-30 Release-7-4-4 Release-7-4-5 Release-7-4-6 Release-7-4-7 Release-7-4-8 Release-7-4-9 Release-8-0 Release-8-0-1 Release-8-0-10 Release-8-0-11 Release-8-0-12 Release-8-0-13 Release-8-0-14 Release-8-0-15 Release-8-0-16 Release-8-0-17 Release-8-0-18 Release-8-0-19 Release-8-0-2 Release-8-0-20 Release-8-0-21 Release-8-0-22 Release-8-0-23 Release-8-0-24 Release-8-0-25 Release-8-0-26 Release-8-0-3 Release-8-0-4 Release-8-0-5 Release-8-0-6 Release-8-0-7 Release-8-0-8 Release-8-0-9 Release-8-1 Release-8-1-1 Release-8-1-10 Release-8-1-11 Release-8-1-12 Release-8-1-13 Release-8-1-14 Release-8-1-15 Release-8-1-16 Release-8-1-17 Release-8-1-18 Release-8-1-19 Release-8-1-2 Release-8-1-20 Release-8-1-21 Release-8-1-22 Release-8-1-23 Release-8-1-3 Release-8-1-4 Release-8-1-5 Release-8-1-6 Release-8-1-7 Release-8-1-8 Release-8-1-9 Release-8-2 Release-8-2-1 Release-8-2-10 Release-8-2-11 Release-8-2-12 Release-8-2-13 Release-8-2-14 Release-8-2-15 Release-8-2-16 Release-8-2-17 Release-8-2-18 Release-8-2-19 Release-8-2-2 Release-8-2-20 Release-8-2-21 Release-8-2-3 Release-8-2-4 Release-8-2-5 Release-8-2-6 Release-8-2-7 Release-8-2-8 Release-8-2-9 Release-8-3 Release-8-3-1 Release-8-3-10 Release-8-3-11 Release-8-3-12 Release-8-3-13 Release-8-3-14 Release-8-3-15 Release-8-3-2 Release-8-3-3 Release-8-3-4 Release-8-3-5 Release-8-3-6 Release-8-3-7 Release-8-3-8 Release-8-3-9 Release-8-4 Release-8-4-1 Release-8-4-2 Release-8-4-3 Release-8-4-4 Release-8-4-5 Release-8-4-6 Release-8-4-7 Release-8-4-8 Release-9-0 Release-9-0-1 Release-9-0-2 Release-9-0-3 Release-9-0-4 F. 額外提供的模塊 F.1. adminpack F.2. auto_explain F.3. btree_gin F.4. btree_gist F.5. chkpass F.6. citext F.7. cube F.8. dblink Contrib-dblink-connect Contrib-dblink-connect-u Contrib-dblink-disconnect Contrib-dblink Contrib-dblink-exec Contrib-dblink-open Contrib-dblink-fetch Contrib-dblink-close Contrib-dblink-get-connections Contrib-dblink-error-message Contrib-dblink-send-query Contrib-dblink-is-busy Contrib-dblink-get-notify Contrib-dblink-get-result Contrib-dblink-cancel-query Contrib-dblink-get-pkey Contrib-dblink-build-sql-insert Contrib-dblink-build-sql-delete Contrib-dblink-build-sql-update F.9. dict_int F.10. dict_xsyn F.11. earthdistance F.12. fuzzystrmatch F.13. hstore F.14. intagg F.15. intarray F.16. isn F.17. lo F.18. ltree F.19. oid2name F.20. pageinspect F.21. passwordcheck F.22. pg_archivecleanup F.23. pgbench F.24. pg_buffercache F.25. pgcrypto F.26. pg_freespacemap F.27. pgrowlocks F.28. pg_standby F.29. pg_stat_statements F.30. pgstattuple F.31. pg_trgm F.32. pg_upgrade F.33. seg F.34. spi F.35. sslinfo F.36. tablefunc F.37. test_parser F.38. tsearch2 F.39. unaccent F.40. uuid-ossp F.41. vacuumlo F.42. xml2 G. 外部項(xiàng)目 G.1. 客戶端接口 G.2. 過程語言 G.3. 擴(kuò)展 H. The Source Code Repository H.1. Getting The Source Via Git I. 文檔 I.1. DocBook I.2. 工具集 I.3. 制作文檔 I.4. 文檔寫作 I.5. 風(fēng)格指導(dǎo) J. 首字母縮略詞 參考書目 Bookindex Index
watak

8.5. 日期/時(shí)間類型

Table 8-9顯示了PostgreSQL支持的SQL中所有日期和時(shí)間類型。 這些數(shù)據(jù)類型上可以進(jìn)行的操作在Section 9.9中描述。

Table 8-9. 日期/時(shí)間類型

名字 存儲(chǔ)空間 描述 最低值 最高值 分辨率
timestamp [ (p) ] [ without time zone ] 8字節(jié) 日期和時(shí)間(無時(shí)區(qū)) 4713 BC 294276 AD 1毫秒/14位
timestamp [ (p) ] with time zone 8字節(jié) 日期和時(shí)間,帶時(shí)區(qū) 4713 BC 294276 AD 1毫秒/14位
date 4字節(jié) 只用于日期 4713 BC 5874897 AD 1天
time [ (p) ] [ without time zone ] 8字節(jié) 只用于時(shí)間 00:00:00 24:00:00 1毫秒/14位
time [ (p) ] with time zone 12字節(jié) 只用于一日內(nèi)時(shí)間,帶時(shí)區(qū) 00:00:00+1459 24:00:00-1459 1毫秒/14位
interval [ fields ] [ (p) ] 12字節(jié) 時(shí)間間隔 -178000000年 178000000年 1毫秒/14位

Note: SQL標(biāo)準(zhǔn)要求僅僅將timestamp類型 等于timestamp without time zone類型,(7.3之前的版本將其看做timestamp with time zone

timetimestampinterval 接受一個(gè)可選的精度值p 以指明秒域中小數(shù)部分的位數(shù)。沒有明確的缺省精度, p的范圍對(duì)timestampinterval類型是從0到大約6。

Note: 如果timestamp數(shù)值是以雙精度浮點(diǎn)數(shù)(目前的缺省)的方式存儲(chǔ)的, 微秒的精度是可以通過全方位的價(jià)值觀。當(dāng)timestamp值存儲(chǔ)為雙精度浮點(diǎn)數(shù)(1過時(shí)的編譯時(shí)間選項(xiàng)),那么有效精度會(huì)小于6。 timestamp值是以2000-01-01午夜之前或之后的秒數(shù)存儲(chǔ)的, 而微秒的精度是為那些在2000-01-01前后幾年的日期實(shí)現(xiàn)的,對(duì)于那些遠(yuǎn)一些的日子,精度會(huì)下降。 但當(dāng)timestamp值是使用浮點(diǎn)實(shí)現(xiàn)數(shù)字,日期內(nèi)取得幾微秒精度。 請注意,在以浮點(diǎn)數(shù)存儲(chǔ)的時(shí)候,隨著時(shí)間間隔的增加,timestamp數(shù)值的精度會(huì)降低。 如上圖所示:從公元前4713年至5874897 AD。

相同的編譯時(shí)間選項(xiàng)也決定是否timeinterval值存儲(chǔ)為 浮點(diǎn)數(shù)或8字節(jié)的整數(shù)。在浮點(diǎn)運(yùn)算的情況下,大interval值降低 精密的間隔增加的大小。

對(duì)于time類型,如果使用了八字節(jié)的整數(shù)存儲(chǔ), 那么p允許的范圍是從0到6, 如果使用的是浮點(diǎn)數(shù)存儲(chǔ),那么這個(gè)范圍是0到10。

interval類型有一個(gè)額外的選項(xiàng),用于通過寫這些詞組之一,限制存儲(chǔ)領(lǐng)域;

YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
YEAR TO MONTH
DAY TO HOUR
DAY TO MINUTE
DAY TO SECOND
HOUR TO MINUTE
HOUR TO SECOND
MINUTE TO SECOND

需要注意的是,如果同時(shí)聲明了fieldsp, fields必須包括SECOND,因?yàn)榫戎贿m用于秒。

time with time zone類型是SQL標(biāo)準(zhǔn)定義的, 但是完整定義的有些方面會(huì)導(dǎo)致有問題的用法。 在大多數(shù)情況下,datetime,timestamp without time zonetimestamp with time zone的組合就應(yīng)該 能提供一切應(yīng)用需要的日期/時(shí)間的完整功能。

abstimereltime類型是低分辨率類型, 它們被用于系統(tǒng)內(nèi)部。我們反對(duì)你使用這些類型, 因?yàn)檫@些舊類型的部分或全部可能會(huì)在未來的版本里消失。

8.5.1. 日期/時(shí)間輸入

日期和時(shí)間的輸入幾乎可以是任何合理的格式, 包括 ISO-8601 格式、SQL-兼容格式、傳統(tǒng)POSTGRES格式、其它的形式。 對(duì)于一些格式,日期輸入里的月和日可能會(huì)讓人迷惑, 因此系統(tǒng)支持自定義這些字段的順序。 把DateStyle參數(shù)設(shè)置為MDY就按照"月-日-年"解析, 設(shè)置為DMY就按照"日-月-年"解析,設(shè)置為YMD就按照"年-月-日"解析。

PostgreSQL在處理日期/時(shí)間輸入上 比SQL標(biāo)準(zhǔn)要求的更靈活。 參閱Appendix B獲取關(guān)于日期/時(shí)間輸入的 準(zhǔn)確分析規(guī)則和可識(shí)別文本字段,包括月份、星期幾、時(shí)區(qū)。

請記住任何日期或者時(shí)間的文本輸入需要由單引號(hào)包圍, 就像一個(gè)文本字符串一樣。參考Section 4.1.2.7 獲取更多信息。 SQL要求使用下面的語法:

type [ (p) ] 'value'

可選精度聲明中的p是一個(gè)整數(shù), 表示在秒域中小數(shù)部分的位數(shù),我們可以對(duì) time,timestamp,和interval類型聲明精度。 允許的精度在上面已經(jīng)說明。如果在常量聲明中沒有聲明精度,缺省是文本值的精度。

8.5.1.1. 日期

Table 8-10顯示了date類型可能的輸入方式。

Table 8-10. 日期輸入

例子 描述
1999-01-08 ISO 8601格式(建議格式),任何方式下都是1999年1月8號(hào)
January 8, 1999 在任何datestyle輸入模式下都無歧義
1/8/1999 在MDY下是一月八號(hào);在DMY模式下是八月一日
1/18/1999 MDY 模式下是一月十八日,其它模式下被拒絕
01/02/03 MDY模式下的2003年1月2日;DMY模式下的2003年2月1日;YMD模式下的2001年2月3日
1999-Jan-08 任何模式下都是1月8日
Jan-08-1999 任何模式下都是1月8日
08-Jan-1999 任何模式下都是1月8日
99-Jan-08 YMD模式下是1月8日,否則錯(cuò)誤
08-Jan-99 一月八日,除了在YMD模式下是錯(cuò)誤的之外
Jan-08-99 一月八日,除了在YMD模式下是錯(cuò)誤的之外
19990108 ISO 8601;任何模式下都是1999年1月8日
990108 ISO 8601;任何模式下都是1999年1月8日
1999.008 年和年里的第幾天
J2451187 儒略日
January 8, 99 BC 公元前99年

8.5.1.2. 時(shí)間

當(dāng)日時(shí)間類型是time [ (p) ] without time zonetime [ (p) ] with time zone。 只寫time等效于time without time zone。

這些類型的有效輸入由當(dāng)日時(shí)間后面跟著可選的時(shí)區(qū)組成( 參閱Table 8-11和Table 8-12)。 如果在time without time zone類型的輸入中聲明了時(shí)區(qū), 那么它會(huì)被悄悄地忽略。同樣指定的日期也會(huì)被忽略, 除非使用了一個(gè)包括夏令時(shí)規(guī)則的時(shí)區(qū)名,比如 America/New_York,在這種情況下, 必須指定日期以確定這個(gè)時(shí)間是標(biāo)準(zhǔn)時(shí)間還是夏令時(shí)。 時(shí)區(qū)偏移將記錄在time with time zone中。

Table 8-11. 時(shí)間輸入

例子 描述
04:05:06.789 ISO 8601
04:05:06 ISO 8601
04:05 ISO 8601
040506 ISO 8601
04:05 AM 與04:05一樣;AM不影響數(shù)值
04:05 PM 與16:05一樣;輸入小時(shí)數(shù)必須<=12
04:05:06.789-8 ISO 8601
04:05:06-08:00 ISO 8601
04:05-08:00 ISO 8601
040506-08 ISO 8601
04:05:06 PST 縮寫的時(shí)區(qū)
2003-04-12 04:05:06 America/New_York 用名字聲明的時(shí)區(qū)

Table 8-12. 時(shí)區(qū)輸入

例子 描述
PST 太平洋標(biāo)準(zhǔn)時(shí)間(Pacific Standard Time)
America/New_York 完整時(shí)區(qū)名稱
PST8PDT POSIX風(fēng)格的時(shí)區(qū)
-8:00 ISO-8601與PST的偏移
-800 ISO-8601與PST的偏移
-8 ISO-8601與PST的偏移
zulu 軍方對(duì)UTC的縮寫
z zulu的縮寫

參考Section 8.5.3以獲取如何指定時(shí)區(qū)的更多信息。

8.5.1.3. 時(shí)間戳

時(shí)間戳類型的有效輸入由一個(gè)日期和時(shí)間的連接組成, 后面跟著一個(gè)可選的時(shí)區(qū),一個(gè)可選的ADBC。 另外,AD/BC可以出現(xiàn)在時(shí)區(qū)前面, 但這個(gè)順序并非最佳的。因此

1999-01-08 04:05:06

和:

1999-01-08 04:05:06 -8:00

都是有效的數(shù)值,它是兼容 ISO-8601的。另外, 也支持下面這種使用廣泛的格式;

January 8 04:05:06 1999 PST

被支持。

SQL標(biāo)準(zhǔn)通過"+"或者"-"是否 存在來區(qū)分timestamp without time zonetimestamp with time zone文本。因此,根據(jù)標(biāo)準(zhǔn),

TIMESTAMP '2004-10-19 10:23:54'

是一個(gè)timestamp without time zone,而

TIMESTAMP '2004-10-19 10:23:54+02'

是一個(gè)timestamp with time zone。 PostgreSQL從來不會(huì) 在確定文本的類型之前檢查文本內(nèi)容, 因此會(huì)把上面兩個(gè)都看做是timestamp without time zone。 因此要保證把上面的第二個(gè)當(dāng)作timestamp without time zone看待, 就要給它明確的類型:

TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'

如果一個(gè)文本已被確定是timestamp without time zone, PostgreSQL將悄悄忽略任何文本中指出的時(shí)區(qū)。 因此,生成的日期/時(shí)間值是從輸入值的日期/時(shí)間字段衍生出來的,并且沒有就時(shí)區(qū)進(jìn)行調(diào)整。

對(duì)于timestamp with time zone,內(nèi)部存儲(chǔ)的數(shù)值總是UTC(全球統(tǒng)一時(shí)間,以前也叫格林威治時(shí)間 GMT)。 如果一個(gè)輸入值有明確的時(shí)區(qū)聲明,那么它將用該時(shí)區(qū)合適的偏移量轉(zhuǎn)換成 UTC 。 如果在輸入字符串里沒有時(shí)區(qū)聲明, 那么它就假設(shè)是在系統(tǒng)的timezone參數(shù)里的那個(gè)時(shí)區(qū),然后使用這個(gè)timezone時(shí)區(qū)轉(zhuǎn)換成UTC。

如果輸出一個(gè)timestamp with time zone,那么它總是從UTC轉(zhuǎn)換成當(dāng)前的timezone時(shí)區(qū), 并且顯示為該時(shí)區(qū)的本地時(shí)間。要看其它時(shí)區(qū)的該時(shí)間, 要么修改timezone, 要么使用AT TIME ZONE構(gòu)造 (參閱Section 9.9.3)。

timestamp without time zonetimestamp with time zone之間的 轉(zhuǎn)換通常假設(shè)timestamp without time zone數(shù)值應(yīng)該以timezone本地時(shí)間的形式接受或者寫出。 其它的時(shí)區(qū)引用可以用AT TIME ZONE的方式為轉(zhuǎn)換聲明。

8.5.1.4. 特殊值

PostgreSQL為方便起見支持在 Table 8-13里面顯示的幾個(gè)特殊輸入值。 值infinity-infinity是特別在系統(tǒng)內(nèi)部表示的, 并且將按照同樣的方式顯示;但是其它的都只是符號(hào)縮寫, 在讀取的時(shí)候?qū)⒈晦D(zhuǎn)換成普通的日期/時(shí)間值。 特別是now和相關(guān)的字符串在讀取的時(shí)候就被轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值。 所有這些值在 SQL 命令里當(dāng)作普通常量對(duì)待時(shí),都需要寫在單引號(hào)里面。

Table 8-13. 特殊日期/時(shí)間輸入

輸入字符串 適用類型 描述
epoch date, timestamp 1970-01-01 00:00:00+00 (UNIX系統(tǒng)零時(shí))
infinity date, timestamp 比任何其它時(shí)間戳都晚
-infinity date, timestamp 比任何其它時(shí)間戳都早
now date, time, timestamp 當(dāng)前事務(wù)的開始時(shí)間
today date, timestamp 今日午夜
tomorrow date, timestamp 明日午夜
yesterday date, timestamp 昨日午夜
allballs time 00:00:00.00 UTC

下列SQL兼容函數(shù)也可以用于獲取對(duì)應(yīng)數(shù)據(jù)類型的當(dāng)前時(shí)間值: CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP, LOCALTIME,LOCALTIMESTAMP。 后四個(gè)接受一個(gè)可選的精度聲明(Section 9.9.4)。不過, 請注意這些SQL函數(shù)不是被當(dāng)作數(shù)據(jù)輸入字符串識(shí)別的。

8.5.2. 日期/時(shí)間輸入

日期/時(shí)間類型的輸出格式設(shè)成 ISO 8601(默認(rèn))、SQL(Ingres)、 傳統(tǒng)的POSTGRES(Unix date 格式)、German四種風(fēng)格之一。 SQL標(biāo)準(zhǔn)要求使用ISO 8601格式。"SQL"輸出格式的名字是歷史偶然。 Table 8-14顯示了每種輸出風(fēng)格的例子。 datetime類型的輸出當(dāng)然只是給出的例子里面的日期和時(shí)間部分。

Table 8-14. 日期/時(shí)間輸入

風(fēng)格 描述 例子
ISO ISO 8601/SQL標(biāo)準(zhǔn) 1997-12-17 07:37:16-08
SQL 傳統(tǒng)風(fēng)格 12/17/1997 07:37:16.00 PST
POSTGRES 原始風(fēng)格 Wed Dec 17 07:37:16 1997 PST
German 地區(qū)風(fēng)格 17.12.1997 07:37:16.00 PST

如果聲明了DMY順序,那么在SQL和POSTGRES風(fēng)格里, 日期在月份之前出現(xiàn),否則月份出現(xiàn)在日期之前(參閱Section 8.5.1看看這個(gè)設(shè)置如何影響對(duì)輸入值的解釋)。Table 8-15里有一個(gè)例子。

Table 8-15. 日期順序習(xí)慣

datestyle設(shè)置 輸入順序 輸入樣例
SQL, DMY // 17/12/1997 15:37:16.00 CET
SQL, MDY // 12/17/1997 07:37:16.00 PST
Postgres, DMY day日/month月/year年 Wed 17 Dec 07:37:16 1997 PST

用戶可以用SET datestyle命令選取日期/時(shí)間的風(fēng)格, 也可以在配置文件postgresql.conf中的DateStyle參數(shù)中設(shè)置, 或者在服務(wù)器或客戶端的PGDATESTYLE環(huán)境變量中設(shè)置。 我們也可以用格式化函數(shù)to_char(參見Section 9.8)來更靈活地控制時(shí)間/日期地輸出。

8.5.3. 時(shí)區(qū)

時(shí)區(qū)和時(shí)區(qū)習(xí)慣不僅僅受地球幾何形狀的影響,還受到政治決定的影響。 到了19世紀(jì),全球的時(shí)區(qū)變得稍微標(biāo)準(zhǔn)化了些,但是還是易于遭受隨意的修改 ,部分是因?yàn)橄臅r(shí)制規(guī)則。PostgreSQL使用廣泛 使用的zoneinfo時(shí)區(qū)信息數(shù)據(jù)庫有關(guān)歷史的時(shí)區(qū)規(guī)則。在未來,假設(shè) 是已知的對(duì)于一個(gè)給定的時(shí)區(qū)的最新規(guī)則會(huì)被繼續(xù)無限期的遵守。

PostgreSQL在典型應(yīng)用中盡可能與SQL的定義相兼容。 但SQL標(biāo)準(zhǔn)在日期/時(shí)間類型和功能上有一些奇怪的混淆。 兩個(gè)顯而易見的問題是:

  • date類型與時(shí)區(qū)沒有聯(lián)系,而time類型卻有或可以有。 然而,現(xiàn)實(shí)世界的時(shí)區(qū)只有在與時(shí)間和日期都關(guān)聯(lián)時(shí)才有意義, 因?yàn)闀r(shí)間偏移量(時(shí)差)可能因?yàn)閷?shí)行類似夏時(shí)制這樣的制度而在一年里有所變化。

  • 缺省的時(shí)區(qū)用一個(gè)數(shù)字常量表示與UTC的偏移(時(shí)差)。 因此,當(dāng)跨DST(夏時(shí)制)界限做日期/時(shí)間算術(shù)時(shí), 我們根本不可能把夏時(shí)制這樣的因素計(jì)算進(jìn)去。

為了克服這些困難,我們建議在使用時(shí)區(qū)的時(shí)候,使用那些同時(shí)包含日期和時(shí)間的日期/時(shí)間類型。 我們建議使用time with time zone類型( 盡管PostgreSQL出于合理應(yīng)用以及為了與其它RDBMS兼容的考慮支持這個(gè)類型)。 PostgreSQL假設(shè)你用于 任何類型的本地時(shí)區(qū)都只包含日期或時(shí)間(而不包含時(shí)區(qū))。

在系統(tǒng)內(nèi)部,所有日期和時(shí)間都用全球統(tǒng)一時(shí)間UTC格式存儲(chǔ), 時(shí)間在發(fā)給客戶前端前由數(shù)據(jù)庫服務(wù)器根據(jù)timezone配置參數(shù)聲明的時(shí)區(qū)轉(zhuǎn)換成本地時(shí)間。

PostgreSQL允許使用三種方法指定時(shí)區(qū):

  • 完整的時(shí)區(qū)名,例如America/New_York。 所有可以識(shí)別的時(shí)區(qū)名在pg_timezone_names視圖中列出 (參見Section 45.60)。 PostgreSQL使用廣泛使用的zoneinfo時(shí)區(qū)數(shù)據(jù), 所以這些時(shí)區(qū)名在其它軟件里也能被輕松的識(shí)別。

  • 時(shí)區(qū)縮寫。例如PST。 這種縮寫名通常只是定義了相對(duì)于UTC的偏移量, 而前一種完整的時(shí)區(qū)名可能還隱含著一組夏時(shí)制轉(zhuǎn)換規(guī)則。 所有可以識(shí)別的時(shí)區(qū)縮寫在pg_timezone_abbrevs視圖中列出(參見Section 45.59)。 你不能使用時(shí)區(qū)縮寫來設(shè)置timezone或log_timezone配置參數(shù), 但是你可以在日期/時(shí)間輸入值中結(jié)合AT TIME ZONE操作符使用時(shí)區(qū)縮寫。

  • 除完整的時(shí)區(qū)名及其縮寫之外,PostgreSQL還接受POSIX風(fēng)格的STDoffsetSTDoffsetDST格式的時(shí)區(qū), 其中的STD是時(shí)區(qū)縮寫、offset是一個(gè)相對(duì)于UTC的小時(shí)偏移量、 DST是一個(gè)可選的夏時(shí)制時(shí)區(qū)縮寫(假定相對(duì)于給定的偏移量提前一小時(shí))。 例如,如果EST5EDT不是一個(gè)已識(shí)別的時(shí)區(qū)名,那么它將等同于美國東部時(shí)間。 如果存在夏時(shí)制時(shí)區(qū)名是當(dāng)前時(shí)區(qū)名, 根據(jù)zoneinfo時(shí)區(qū)數(shù)據(jù)庫的posixrules條目中相同的夏時(shí)制事務(wù)規(guī)則,可以考慮使用這個(gè)特性。 在一個(gè)PostgreSQL標(biāo)準(zhǔn)安裝中, posixrulesUS/Eastern相同,因此POSIX格式的時(shí)區(qū)聲明遵循USA夏時(shí)制規(guī)則。 如果需要,可以通過替換posixrules文件來調(diào)整該習(xí)慣。

總之,完整的時(shí)區(qū)名與時(shí)區(qū)縮寫在理論與實(shí)踐之間存在差異: 時(shí)區(qū)縮寫總是代表一個(gè)相對(duì)于UTC的固定偏移量, 然而大多數(shù)完整的時(shí)區(qū)名隱含著一個(gè)本地夏令時(shí)規(guī)則, 因此就有可能有兩個(gè)相對(duì)于UTC的不同偏移量。

需要警惕的是,由于沒有合理的時(shí)區(qū)縮寫檢查,POSIX格式的時(shí)區(qū)特點(diǎn)能導(dǎo)致靜默的偽輸入。 例如,使用SET TIMEZONE TO FOOBAR0時(shí),實(shí)際上系統(tǒng)使用的是一個(gè)很特別的UTC縮寫。 另一個(gè)需要注意的是,在POSIX時(shí)區(qū)名中,積極的偏移用于west格林尼治位置。 在其他地方,PostgreSQL遵循ISO-8601規(guī)定,即積極的時(shí)區(qū)偏移east格林威治。

總體而言,PostgreSQL8.2版本以后時(shí)區(qū)名在所有情況下 都是大小寫無關(guān)的。而之前的版本在某些情況下是大小寫敏感的。

無論是完整的時(shí)區(qū)名還是時(shí)區(qū)縮寫都不是硬連接進(jìn)服務(wù)器的, 它們都是從安裝目錄下的.../share/timezone/.../share/timezonesets/配置文件中獲取的(參見Section B.3)

可以在postgresql.conf文件里設(shè)置timezone配置參數(shù), 或者用任何其它在Chapter 18描述的標(biāo)準(zhǔn)方法。除此之外, 還有好幾種特殊方法可以設(shè)置它:

  • 如果既沒有在postgresql.conf里也沒有在命令行開關(guān) 上聲明timezone,那么服務(wù)器將試圖使用服務(wù)器主機(jī)上的TZ環(huán)境變量 作為服務(wù)器的缺省時(shí)區(qū)。 如果TZ沒有定義或者是PostgreSQL不認(rèn)識(shí)的時(shí)區(qū)名, 那么服務(wù)器將試圖通過檢查C庫函數(shù)localtime()的行為來判斷操作系統(tǒng)的缺省時(shí)區(qū)。 缺省時(shí)區(qū)是按照最接近PostgreSQL的已知時(shí)區(qū)的原則來選擇的。 (如果沒有指定,這些規(guī)則也可以用來選擇默認(rèn)值log_timezone)。

  • 使用SQL命令SET TIME ZONE為會(huì)話設(shè)置時(shí)區(qū), 這是SET TIMEZONE TO的一個(gè)可選的拼寫方式, 更加兼容標(biāo)準(zhǔn)。

  • 如果在客戶端設(shè)置了PGTZ環(huán)境變量, 那么libpq在連接時(shí)將使用 這個(gè)環(huán)境變量給后端發(fā)送一個(gè)SET TIME ZONE命令。

8.5.4. 間隔輸入

interval類型值可以用下面的詳細(xì)語法寫:

[@] quantity unit [quantity unit...] [direction]

這里quantity是一個(gè)數(shù)字(可能已標(biāo)記); unit可以是microsecond,millisecond,second, minute,hourdayweek, monthyear,decade,centurymillennium或這些單位的縮寫或復(fù)數(shù)。 direction可以是ago或?yàn)榭铡?tt class="LITERAL">@標(biāo)記是可選的。ago否定所有。 如果IntervalStyle設(shè)置為postgres_verbose,那么這個(gè)語法同樣用于間隔輸入。

可以在沒有明確單位標(biāo)記的情況下聲明天,小時(shí),分鐘和秒。 例如,'1 12:59:10'等同于'1 day 12 hours 59 min 10 sec'。 同樣,可以用一個(gè)破折號(hào)來聲明一個(gè)年和月的組合,例如'200-10'等同于'200 years 10 months'。 (事實(shí)上,SQL標(biāo)準(zhǔn)值允許短的格式,并且當(dāng) IntervalStyle設(shè)置為sql_standard時(shí),用于輸出)。

要么使用ISO 8601標(biāo)準(zhǔn)4.4.3.2的"format with designators",要么使用4.4.3.3的"alternative format",間隔值可以寫為ISO 8601的時(shí)間間隔。 格式如下:

P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]

字符串必須以P開始,并且可以含有一個(gè)T用以指明一天中時(shí)間的格式。 可用單位的縮寫在Table 8-16有說明。 可以忽略單位,也可以以任意順序聲明,但單位小于一天時(shí)必須在T之后。 尤其M的含義依賴于它在T之前或之后。

Table 8-16. ISO8601間隔單位的縮寫

縮寫 含義
Y
M 月(日期部分)
W
D
H 小時(shí)
M 分鐘(時(shí)間部分)
S

以縮寫格式:

P [ years-months-days ] [ T hours:minutes:seconds ]

一個(gè)字符串必須以P開始,然后以T隔開日期和時(shí)間。 給出的值是如同ISO 8601日期的數(shù)字。

當(dāng)用fields規(guī)范寫一個(gè)時(shí)間間隔常熟,或?qū)⒁粋€(gè)字符串標(biāo)記為用fields規(guī)范定義的一個(gè)間隔柱時(shí), 未標(biāo)記單位的解釋由fields解釋。如INTERVAL '1' YEAR讀作1年,然而INTERVAL '1'代表1秒。 同樣,fields規(guī)范中最低有效字段值規(guī)定會(huì)被靜默的忽略。如,INTERVAL '1 day 2:03:04' HOUR TO MINUTE會(huì)導(dǎo)致刪除 秒字段,而不是天字段。

根據(jù)SQL標(biāo)準(zhǔn),間隔值的所有字段必須有相同的符號(hào),因此前導(dǎo)負(fù)號(hào)可以用于所有字段; 如'-1 2:03:04'中負(fù)號(hào)同時(shí)應(yīng)用于天和小時(shí)/分鐘/秒。 PostgreSQL允許字段有不同的標(biāo)記,并且傳統(tǒng)上,文本表述中的每個(gè)字段會(huì)被認(rèn)為是獨(dú)立標(biāo)記的, 因此在這個(gè)例子中的小時(shí)/分鐘/秒被認(rèn)為是允許的。如果IntervalStyle被設(shè)置為sql_standard,那么前導(dǎo)標(biāo)記被認(rèn)為是應(yīng)用于所有字段的 (當(dāng)然前提是沒有再出現(xiàn)其他標(biāo)記),否則會(huì)使用傳統(tǒng)的PostgreSQL解釋。為了避免這種奇異,建議為每個(gè)字段附上一個(gè)明確的標(biāo)記。

PostgreSQL內(nèi)部,interval值被存儲(chǔ)為月,日,秒的格式,這是因?yàn)樵轮邪?,并且如果進(jìn)行了夏令時(shí)調(diào)整,那么一天可以有23或25小時(shí)。 當(dāng)秒字段可以存儲(chǔ)分?jǐn)?shù)時(shí),月和天字段可以是整數(shù)型。由于時(shí)間間隔通常是由常量字符串或timestamp減法來定義的, 這種存儲(chǔ)方法在大多數(shù)情況下很有效。justify_daysjustify_hours函數(shù)可用于調(diào)整溢出正常范圍值的天和小時(shí)。

在詳細(xì)的輸出格式,以及更緊湊的輸入格式中,字段值可以有小數(shù)部分,例如'1.5 week''01:02:03.45'。 這種輸入被轉(zhuǎn)換成恰當(dāng)?shù)脑拢旌兔雭泶鎯?chǔ)。由于這樣會(huì)產(chǎn)生小數(shù)的月或天,因此在低階字段中引入了分?jǐn)?shù),用以1 month = 30 days 和 1 day = 24 hours的轉(zhuǎn)換。 例如,'1.5 month'即1個(gè)月15天。輸出中,只有秒可以寫成分?jǐn)?shù)形式。

Table 8-17中有一些有效的interval輸入的例子。

Table 8-17. 間隔輸入

示例 說明
1-2 SQL標(biāo)準(zhǔn)格式:一年兩個(gè)月
3 4:05:06 SQL標(biāo)準(zhǔn)格式:3天4小時(shí)5分6秒
1 year 2 months 3 days 4 hours 5 minutes 6 seconds 傳統(tǒng)Postgres格式: 1年2個(gè)月3天4小時(shí)5分鐘6秒
P1Y2M3DT4H5M6S ISO 8601 "帶標(biāo)識(shí)符格式":與上面相同含義
P0001-02-03T04:05:06 ISO 8601 "縮寫格式":與上面相同含義

8.5.5. 間隔輸出

間隔類型的輸出格式可以用命令SET intervalstyle設(shè)置為下面四種類型:sql_standard,postgrespostgres_verboseiso_8601 默認(rèn)是postgres格式,Table 8-18中有每種格式的示例。

sql_standard格式產(chǎn)生的輸出結(jié)果符合SQL的區(qū)間字符串標(biāo)準(zhǔn), 如果間隔值滿足標(biāo)準(zhǔn)的限制(無論年-月,或只有天-時(shí)間,沒有積極和消極的構(gòu)成的混合)。 否則類似一個(gè)標(biāo)準(zhǔn)年-月文本字符串后跟有一個(gè)天-時(shí)間文本字符串的輸出,帶有添加明確標(biāo)記的消除歧義混合信號(hào)的時(shí)間間隔。

postgres格式的輸出與PostgreSQL8.4(此時(shí)DateStyle參數(shù)設(shè)置為ISO)之前的輸出是一致的。

postgres格式的輸出與PostgreSQL8.4(此時(shí)DateStyle參數(shù)設(shè)置為非ISO輸出)之前的輸出是一致的

iso_8601格式的輸出與ISO 8601標(biāo)準(zhǔn)4.4.3.2節(jié)中的"format with designators"一致。

Table 8-18. 間隔輸出格式示例

格式 年-月區(qū)間 天-時(shí)間區(qū)間 混合區(qū)間
sql_standard 1-2 3 4:05:06 -1-2 +3 -4:05:06
postgres 1年2個(gè)月 3天04:05:06 -1年-2個(gè)月+3天-04:05:06
postgres_verbose @1年2個(gè)月 @3天4小時(shí)5分6秒 @1年2個(gè)月-3天4小時(shí)5分6秒以前
iso_8601 P1Y2M P3DT4H5M6S P-1Y-2M3DT-4H-5M-6S

8.5.6. 內(nèi)部

PostgreSQL 使用儒略歷法計(jì)算所有日期/時(shí)間, 假設(shè)一年的長度是365.2425天。這個(gè)方法可以很精確地預(yù)計(jì)/計(jì)算從公元前4713年到很久的未來的任意一天的日期。

19世紀(jì)以前的日期傳統(tǒng)(歷法)只是對(duì)一些趣味讀物有意義, 而在我們這里好像沒有充分的理由把它們編碼入日期/時(shí)間控制器里面去。

Artikel sebelumnya: Artikel seterusnya: