49
Appendix B. Date/Time Support
Every year divisible by 4 is a leap year.
However, every year divisible by 100 is not a leap year.
However, every year divisible by 400 is a leap year after all.
So, 1700, 1800, 1900, 2100, and 2200 are not leap years. But 1600, 2000, and 2400 are leap years.
By contrast, in the older Julian calendar all years divisible by 4 are leap years.
The papal bull of February 1582 decreed that 10 days should be dropped from October 1582 so that
15 October should follow immediately after 4 October. This was observed in Italy, Poland, Portugal,
and Spain. Other Catholic countries followed shortly after, but Protestant countries were reluctant
to change, and the Greek Orthodox countries didn’t change until the start of the 20th century. The
reform was observed by Great Britain and its dominions (including what is now the USA) in 1752.
Thus 2 September 1752was followed by 14 September 1752. This is why Unixsystems have the
cal
program produce the following:
$
cal 9 1752
September 1752
S
M Tu
W Th
F
S
1
2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
But, of course, this calendar is only valid for Great Britain and dominions, not other places. Since it
would be difficult and confusing to try to track the actual calendars that were in use in various places
at various times, PostgreSQL does not try, butrather follows theGregorian calendar rules for alldates,
even thoughthis method is not historically accurate.
Different calendars have been developed in various parts of the world, many predating the Gregorian
system. For example, the beginnings of the Chinese calendar can be traced back to the 14th cen-
tury BC. Legend has it that the Emperor Huangdi invented that calendar in 2637 BC. The People’s
Republic of China uses the Gregorian calendar for civil purposes. The Chinese calendar is used for
determining festivals.
The Julian Date system is another type of calendar, unrelated to the Julian calendar though it is con-
fusingly named similarly tothat calendar. The Julian Date system was invented bythe French scholar
Joseph Justus Scaliger (1540-1609) and probably takes its name from Scaliger’s father, the Italian
scholar Julius Caesar Scaliger (1484-1558). In the Julian Date system, each day has a sequential
number, starting from JD 0 (which is sometimes called the Julian Date). JD 0 corresponds to 1 Jan-
uary 4713 BC in the Julian calendar, or 24 November 4714 BC inthe Gregoriancalendar. Julian Date
counting is most often used by astronomers for labeling their nightly observations, and therefore a
date runs from noon UTC to the next noon UTC, rather than from midnight to midnight: JD 0 desig-
nates the 24 hours from noon UTC on 24 November 4714 BC to noon UTC on 25 November 4714
BC.
AlthoughPostgreSQL supports JulianDate notationfor input and outputof dates (and also uses Julian
dates for some internal datetime calculations), itdoes not observe the nicety of having dates run from
noon to noon. PostgreSQL treats a Julian Date as running from midnight to midnight.
2000
71
Appendix C. SQL Key Words
TableC-1 lists all tokens thatarekeywordsintheSQL standardandinPostgreSQL 9.4.7. Background
information can be foundin Section4.1.1. (For space reasons, onlythe latest two versions of the SQL
standard, andSQL-92 for historical comparison, are included. The differences between those and the
other intermediate standard versions are small.)
SQL distinguishes betweenreservedandnon-reserved keywords. Accordingtothestandard, reserved
key words are the only real key words; they are never allowed as identifiers. Non-reserved key words
only have a special meaning in particular contexts and can be used as identifiers in other contexts.
Most non-reserved key words are actually the names of built-in tables and functions specified by
SQL. The concept of non-reserved key words essentially only exists to declare that some predefined
meaningis attached to a word in some contexts.
In the PostgreSQL parser life is a bit more complicated. There are several different classes of tokens
ranging from those that can never be used as an identifier to those that have absolutely no special
status in the parser as compared to an ordinary identifier. (The latter is usually the case for functions
specified by SQL.) Even reserved key words are not completely reserved in PostgreSQL, but can be
used as column labels (for example,
SELECT 55 AS CHECK
,even though
CHECK
is a reserved key
word).
In Table C-1 in the column for PostgreSQL we classify as “non-reserved” those key words that are
explicitly known to the parser but are allowed as column or table names. Some key words that are
otherwise non-reserved cannot be used as function or data type names and are marked accordingly.
(Most of these words represent built-in functions or data types with special syntax. The function or
type is still available but it cannot be redefined by the user.) Labeled “reserved” are those tokens
that are not allowed as column or table names. Some reserved key words are allowable as names for
functions or data types; this is also shown in the table. If not so marked, a reserved key word is only
allowed as an “AS” column label name.
As a general rule, if you get spurious parser errors for commands that contain any of the listed key
words as an identifier you should try to quote the identifier to see if the problem goes away.
It is important to understand before studying Table C-1 that the fact that a key word is not reserved
in PostgreSQL does not mean that the feature relatedto the word is not implemented. Conversely, the
presence of a key word does not indicate the existence of a feature.
Table C-1. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
A
non-reserved
non-reserved
ABORT
non-reserved
ABS
reserved
reserved
ABSENT
non-reserved
non-reserved
ABSOLUTE
non-reserved
non-reserved
non-reserved
reserved
ACCESS
non-reserved
ACCORDING
non-reserved
non-reserved
ACTION
non-reserved
non-reserved
non-reserved
reserved
ADA
non-reserved
non-reserved
non-reserved
2001
C# Word - Document Processing in C#.NET GetDocument(); //Document clone IDocument doc0 = doc.Clone(); //Get all picture in document List<Bitmap> bitmaps = doc0.GetAllPicture(); Create, Add, Delete or
add picture pdf; add image to pdf acrobat reader
148
Appendix C. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
ADD
non-reserved
non-reserved
non-reserved
reserved
ADMIN
non-reserved
non-reserved
non-reserved
AFTER
non-reserved
non-reserved
non-reserved
AGGREGATE
non-reserved
ALL
reserved
reserved
reserved
reserved
ALLOCATE
reserved
reserved
reserved
ALSO
non-reserved
ALTER
non-reserved
reserved
reserved
reserved
ALWAYS
non-reserved
non-reserved
non-reserved
ANALYSE
reserved
ANALYZE
reserved
AND
reserved
reserved
reserved
reserved
ANY
reserved
reserved
reserved
reserved
ARE
reserved
reserved
reserved
ARRAY
reserved
reserved
reserved
ARRAY_AGG
reserved
reserved
ARRAY_MAX_CARDINALITY
reserved
AS
reserved
reserved
reserved
reserved
ASC
reserved
non-reserved
non-reserved
reserved
ASENSITIVE
reserved
reserved
ASSERTION
non-reserved
non-reserved
non-reserved
reserved
ASSIGNMENT
non-reserved
non-reserved
non-reserved
ASYMMETRIC
reserved
reserved
reserved
AT
non-reserved
reserved
reserved
reserved
ATOMIC
reserved
reserved
ATTRIBUTE
non-reserved
non-reserved
non-reserved
ATTRIBUTES
non-reserved
non-reserved
AUTHORIZATION
reserved (can be
function or type)
reserved
reserved
reserved
AVG
reserved
reserved
reserved
BACKWARD
non-reserved
BASE64
non-reserved
non-reserved
BEFORE
non-reserved
non-reserved
non-reserved
BEGIN
non-reserved
reserved
reserved
reserved
BEGIN_FRAME
reserved
BEGIN_PARTITION
reserved
BERNOULLI
non-reserved
non-reserved
BETWEEN
non-reserved
(cannot be
function or type)
reserved
reserved
reserved
2002
133
Appendix C. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
BIGINT
non-reserved
(cannot be
function or type)
reserved
reserved
BINARY
reserved (can be
function or type)
reserved
reserved
BIT
non-reserved
(cannot be
function or type)
reserved
BIT_LENGTH
reserved
BLOB
reserved
reserved
BLOCKED
non-reserved
non-reserved
BOM
non-reserved
non-reserved
BOOLEAN
non-reserved
(cannot be
function or type)
reserved
reserved
BOTH
reserved
reserved
reserved
reserved
BREADTH
non-reserved
non-reserved
BY
non-reserved
reserved
reserved
reserved
C
non-reserved
non-reserved
non-reserved
CACHE
non-reserved
CALL
reserved
reserved
CALLED
non-reserved
reserved
reserved
CARDINALITY
reserved
reserved
CASCADE
non-reserved
non-reserved
non-reserved
reserved
CASCADED
non-reserved
reserved
reserved
reserved
CASE
reserved
reserved
reserved
reserved
CAST
reserved
reserved
reserved
reserved
CATALOG
non-reserved
non-reserved
non-reserved
reserved
CATALOG_NAME
non-reserved
non-reserved
non-reserved
CEIL
reserved
reserved
CEILING
reserved
reserved
CHAIN
non-reserved
non-reserved
non-reserved
CHAR
non-reserved
(cannot be
function or type)
reserved
reserved
reserved
CHARACTER
non-reserved
(cannot be
function or type)
reserved
reserved
reserved
CHARACTERISTICS
non-reserved
non-reserved
non-reserved
CHARACTERS
non-reserved
non-reserved
CHARACTER_LENGTH
reserved
reserved
reserved
2003
126
Appendix C. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
CHARACTER_SET_CATALOG
non-reserved
non-reserved
non-reserved
CHARACTER_SET_NAME
non-reserved
non-reserved
non-reserved
CHARACTER_SET_SCHEMA
non-reserved
non-reserved
non-reserved
CHAR_LENGTH
reserved
reserved
reserved
CHECK
reserved
reserved
reserved
reserved
CHECKPOINT
non-reserved
CLASS
non-reserved
CLASS_ORIGIN
non-reserved
non-reserved
non-reserved
CLOB
reserved
reserved
CLOSE
non-reserved
reserved
reserved
reserved
CLUSTER
non-reserved
COALESCE
non-reserved
(cannot be
function or type)
reserved
reserved
reserved
COBOL
non-reserved
non-reserved
non-reserved
COLLATE
reserved
reserved
reserved
reserved
COLLATION
reserved (can be
function or type)
non-reserved
non-reserved
reserved
COLLATION_CATALOG
non-reserved
non-reserved
non-reserved
COLLATION_NAME
non-reserved
non-reserved
non-reserved
COLLATION_SCHEMA
non-reserved
non-reserved
non-reserved
COLLECT
reserved
reserved
COLUMN
reserved
reserved
reserved
reserved
COLUMNS
non-reserved
non-reserved
COLUMN_NAME
non-reserved
non-reserved
non-reserved
COMMAND_FUNCTION
non-reserved
non-reserved
non-reserved
COMMAND_FUNCTION_CODE
non-reserved
non-reserved
COMMENT
non-reserved
COMMENTS
non-reserved
COMMIT
non-reserved
reserved
reserved
reserved
COMMITTED
non-reserved
non-reserved
non-reserved
non-reserved
CONCURRENTLY
reserved (can be
function or type)
CONDITION
reserved
reserved
CONDITION_NUMBER
non-reserved
non-reserved
non-reserved
2004
134
Appendix C. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
CONFIGURATION
non-reserved
CONNECT
reserved
reserved
reserved
CONNECTION
non-reserved
non-reserved
non-reserved
reserved
CONNECTION_NAME
non-reserved
non-reserved
non-reserved
CONSTRAINT
reserved
reserved
reserved
reserved
CONSTRAINTS
non-reserved
non-reserved
non-reserved
reserved
CONSTRAINT_CATALOG
non-reserved
non-reserved
non-reserved
CONSTRAINT_NAME
non-reserved
non-reserved
non-reserved
CONSTRAINT_SCHEMA
non-reserved
non-reserved
non-reserved
CONSTRUCTOR
non-reserved
non-reserved
CONTAINS
reserved
non-reserved
CONTENT
non-reserved
non-reserved
non-reserved
CONTINUE
non-reserved
non-reserved
non-reserved
reserved
CONTROL
non-reserved
non-reserved
CONVERSION
non-reserved
CONVERT
reserved
reserved
reserved
COPY
non-reserved
CORR
reserved
reserved
CORRESPONDING
reserved
reserved
reserved
COST
non-reserved
COUNT
reserved
reserved
reserved
COVAR_POP
reserved
reserved
COVAR_SAMP
reserved
reserved
CREATE
reserved
reserved
reserved
reserved
CROSS
reserved (can be
function or type)
reserved
reserved
reserved
CSV
non-reserved
CUBE
reserved
reserved
CUME_DIST
reserved
reserved
CURRENT
non-reserved
reserved
reserved
reserved
CURRENT_CATALOG
reserved
reserved
reserved
CURRENT_DATE
reserved
reserved
reserved
reserved
CURRENT_DEFAULT_TRANSFORM_GROUP
reserved
reserved
CURRENT_PATH
reserved
reserved
CURRENT_ROLE
reserved
reserved
reserved
CURRENT_ROW
reserved
2005
147
Appendix C. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
CURRENT_SCHEMA
reserved (can be
function or type)
reserved
reserved
CURRENT_TIME
reserved
reserved
reserved
reserved
CURRENT_TIMESTAMP
reserved
reserved
reserved
reserved
CURRENT_TRANSFORM_GROUP_FOR_TYPE
reserved
reserved
CURRENT_USER
reserved
reserved
reserved
reserved
CURSOR
non-reserved
reserved
reserved
reserved
CURSOR_NAME
non-reserved
non-reserved
non-reserved
CYCLE
non-reserved
reserved
reserved
DATA
non-reserved
non-reserved
non-reserved
non-reserved
DATABASE
non-reserved
DATALINK
reserved
reserved
DATE
reserved
reserved
reserved
DATETIME_INTERVAL_CODE
non-reserved
non-reserved
non-reserved
DATETIME_INTERVAL_PRECISION
non-reserved
non-reserved
non-reserved
DAY
non-reserved
reserved
reserved
reserved
DB
non-reserved
non-reserved
DEALLOCATE
non-reserved
reserved
reserved
reserved
DEC
non-reserved
(cannot be
function or type)
reserved
reserved
reserved
DECIMAL
non-reserved
(cannot be
function or type)
reserved
reserved
reserved
DECLARE
non-reserved
reserved
reserved
reserved
DEFAULT
reserved
reserved
reserved
reserved
DEFAULTS
non-reserved
non-reserved
non-reserved
DEFERRABLE
reserved
non-reserved
non-reserved
reserved
DEFERRED
non-reserved
non-reserved
non-reserved
reserved
DEFINED
non-reserved
non-reserved
DEFINER
non-reserved
non-reserved
non-reserved
DEGREE
non-reserved
non-reserved
DELETE
non-reserved
reserved
reserved
reserved
DELIMITER
non-reserved
DELIMITERS
non-reserved
DENSE_RANK
reserved
reserved
DEPTH
non-reserved
non-reserved
DEREF
reserved
reserved
DERIVED
non-reserved
non-reserved
2006
132
Appendix C. SQL Key Words
Key Word
PostgreSQL
SQL:2011
SQL:2008
SQL-92
DESC
reserved
non-reserved
non-reserved
reserved
DESCRIBE
reserved
reserved
reserved
DESCRIPTOR
non-reserved
non-reserved
reserved
DETERMINISTIC
reserved
reserved
DIAGNOSTICS
non-reserved
non-reserved
reserved
DICTIONARY
non-reserved
DISABLE
non-reserved
DISCARD
non-reserved
DISCONNECT
reserved
reserved
reserved
DISPATCH
non-reserved
non-reserved
DISTINCT
reserved
reserved
reserved
reserved
DLNEWCOPY
reserved
reserved
DLPREVIOUSCOPY
reserved
reserved
DLURLCOMPLETE
reserved
reserved
DLURLCOMPLETEONLY
reserved
reserved
DLURLCOMPLETEWRITE
reserved
reserved
DLURLPATH
reserved
reserved
DLURLPATHONLY
reserved
reserved
DLURLPATHWRITE
reserved
reserved
DLURLSCHEME
reserved
reserved
DLURLSERVER
reserved
reserved
DLVALUE
reserved
reserved
DO
reserved
DOCUMENT
non-reserved
non-reserved
non-reserved
DOMAIN
non-reserved
non-reserved
non-reserved
reserved
DOUBLE
non-reserved
reserved
reserved
reserved
DROP
non-reserved
reserved
reserved
reserved
DYNAMIC
reserved
reserved
DYNAMIC_FUNCTION
non-reserved
non-reserved
non-reserved
DYNAMIC_FUNCTION_CODE
non-reserved
non-reserved
EACH
non-reserved
reserved
reserved
ELEMENT
reserved
reserved
ELSE
reserved
reserved
reserved
reserved
EMPTY
non-reserved
non-reserved
ENABLE
non-reserved
ENCODING
non-reserved
non-reserved
non-reserved
ENCRYPTED
non-reserved
2007
Documents you may be interested
Documents you may be interested