• No results found

Teradata Database. SQL Reference. Data Types and Literals

N/A
N/A
Protected

Academic year: 2021

Share "Teradata Database. SQL Reference. Data Types and Literals"

Copied!
298
0
0

Loading.... (view fulltext now)

Full text

(1)

Teradata Database

SQL Reference

Data Types and Literals

Release 12.0 B035-1143-067A November 2009

(2)

Teradata, BYNET, DBC/1012, DecisionCast, DecisionFlow, DecisionPoint, Eye logo design, InfoWise, Meta Warehouse, MyCommerce, SeeChain, SeeCommerce, SeeRisk, Teradata Decision Experts, Teradata Source Experts, WebAnalyst, and You’ve Never Seen Your Business Like This Before are trademarks or registered trademarks of Teradata Corporation or its affiliates.

Adaptec and SCSISelect are trademarks or registered trademarks of Adaptec, Inc. AMD Opteron and Opteron are trademarks of Advanced Micro Devices, Inc.

BakBone and NetVault are trademarks or registered trademarks of BakBone Software, Inc. EMC, PowerPath, SRDF, and Symmetrix are registered trademarks of EMC Corporation. GoldenGate is a trademark of GoldenGate Software, Inc.

Hewlett-Packard and HP are registered trademarks of Hewlett-Packard Company. Intel, Pentium, and XEON are registered trademarks of Intel Corporation.

IBM, CICS, DB2, MVS, RACF, Tivoli, and VM are registered trademarks of International Business Machines Corporation. Linux is a registered trademark of Linus Torvalds.

LSI and Engenio are registered trademarks of LSI Corporation.

Microsoft, Active Directory, Windows, Windows NT, and Windows Server are registered trademarks of Microsoft Corporation in the United States and other countries.

Novell and SUSE are registered trademarks of Novell, Inc., in the United States and other countries. QLogic and SANbox trademarks or registered trademarks of QLogic Corporation.

SAS and SAS/C are trademarks or registered trademarks of SAS Institute Inc. SPARC is a registered trademarks of SPARC International, Inc.

Sun Microsystems, Solaris, Sun, and Sun Java are trademarks or registered trademarks of Sun Microsystems, Inc., in the United States and other countries.

Symantec, NetBackup, and VERITAS are trademarks or registered trademarks of Symantec Corporation or its affiliates in the United States and other countries.

Unicode is a collective membership mark and a service mark of Unicode, Inc.

UNIX is a registered trademark of The Open Group in the United States and other countries.

Other product and company names mentioned herein may be the trademarks of their respective owners.

THEINFORMATIONCONTAINEDINTHISDOCUMENTISPROVIDEDONAN “AS-IS” BASIS, WITHOUTWARRANTYOFANYKIND, EITHER EXPRESSORIMPLIED, INCLUDINGTHEIMPLIEDWARRANTIESOFMERCHANTABILITY, FITNESSFORAPARTICULARPURPOSE, OR NON-INFRINGEMENT. SOMEJURISDICTIONSDONOTALLOWTHEEXCLUSIONOFIMPLIEDWARRANTIES, SOTHEABOVEEXCLUSION MAYNOTAPPLYTOYOU. INNOEVENTWILL TERADATA CORPORATIONBELIABLEFORANYINDIRECT, DIRECT, SPECIAL, INCIDENTAL, ORCONSEQUENTIALDAMAGES, INCLUDINGLOSTPROFITSORLOSTSAVINGS, EVENIFEXPRESSLYADVISEDOFTHEPOSSIBILITYOF SUCHDAMAGES.

The information contained in this document may contain references or cross-references to features, functions, products, or services that are not announced or available in your country. Such references do not imply that Teradata Corporation intends to announce such features, functions, products, or services in your country. Please consult your local Teradata Corporation representative for those features, functions, products, or services available in your country.

Information contained in this document may contain technical inaccuracies or typographical errors. Information may be changed or updated without notice. Teradata Corporation may also make improvements or changes in the products or services described in this information at any time without notice.

To maintain the quality of our products and services, we would like your comments on the accuracy, clarity, organization, and value of this document. Please e-mail: teradata-books@lists.teradata.com

Any comments or materials (collectively referred to as “Feedback”) sent to Teradata Corporation will be deemed non-confidential. Teradata Corporation will have no obligation of any kind with respect to Feedback and will be free to use, reproduce, disclose, exhibit, display, transform, create derivative works of, and distribute the Feedback and derivative works thereof without limitation on a royalty-free basis. Further, Teradata Corporation will be free to use any ideas, concepts, know-how, or techniques contained in such Feedback for any purpose whatsoever, including developing, manufacturing, or marketing products or services incorporating Feedback.

(3)

Preface

Purpose

SQL Reference: Data Types and Literals describes how to use data types and literals within Teradata SQL.

Use this book in conjunction with the other books in the SQL Reference book set.

Audience

System administrators, database administrators, and security administrators are the principal audience for this book. Teradata field engineers and other technical personnel responsible for designing and maintaining Teradata Database may also find this book useful.

Supported Software Release

This book supports Teradata® Database 12.0.

Prerequisites

You should be familiar with basic relational database management technology and SQL. This manual is not an SQL primer.

If you are not familiar with Teradata Database, you may find it useful to read Introduction to Teradata Warehouse before reading this document.

For additional information about developing applications using embedded SQL, see Teradata Preprocessor2 for Embedded SQL Programmer Guide.

Changes to This Book

This book includes the following changes to support the current release:

Date Description

(4)

Additional Information

Additional Information

Additional information that supports this product and Teradata Database is available at the following Web sites.

September 2007 Addition of material to support Unicode character string literals, hexadecimal name literals, and Unicode delimited identifiers

Addition of material to explain the use of the DECIMALDIGITS BTEQ command to set the maximum precision for decimal values

Addition of material to support implicit conversion of DateTime data types September 2006 Addition of material to support BIGINT data type

Modification of DECIMAL data type to support a maximum of 38 digits November 2005 Addition of material to support UDT data types

Date Description

Type of Information Description Source

Overview of the release

Information too late for the manuals

The Release Definition provides the following information:

Overview of all the products in the release

Information received too late to be included in the manuals

Operating systems and Teradata Database versions that are certified to work with each product

Version numbers of each product and the documentation for each product

Information about available training and support center

http://www.info.teradata.com/ Click General Search. In the Publication Product ID field, enter 1725 and click Search to bring up the following Release Definition:

Base System Release Definition

B035-1725-067K

Additional

information related to this product

Use the Teradata Information Products Web site to view or download the most recent versions of all manuals.

Specific manuals that supply related or additional information to this manual are listed.

http://www.info.teradata.com/ Click General Search, and do one of the following:

In the Product Line field, select

Software - Teradata Database

for a list of all of the publications for this release,

In the Publication Product ID field, enter a book number.

(5)

References to Microsoft Windows and Linux

References to Microsoft Windows and Linux

This book refers to “Microsoft Windows” and “Linux.” For Teradata Database 12.0, these references mean the following:

“Windows” is Microsoft Windows Server 2003 32-bit and Microsoft Windows Server 2003 64-bit.

“Linux” is SUSE Linux Enterprise Server 9 and SUSE Linux Enterprise Server 10. Teradata plans to release Teradata Database support for SUSE Linux Enterprise Server 10 before the next major or minor release of the database. Therefore, information about this SUSE release is included in this document. The announcement regarding availability of SUSE Linux Enterprise Server 10 will be made after Teradata Database 12.0 GCA. Please check with your account representative regarding SUSE Linux Enterprise Server 10 availability in your location.

CD-ROM images This site contains a link to a

downloadable CD-ROM image of all customer documentation for this release. Customers are authorized to create CD-ROMs for their use from this image.

http://www.info.teradata.com/ Click General Search. In the Title or Keyword field, enter CD-ROM, and Click Search.

Ordering information for manuals

Use the Teradata Information Products Web site to order printed versions of manuals.

http://www.info.teradata.com/ Click How to Order under Print &

CD Publications. General

information about Teradata

The Teradata home page provides links to numerous sources of information about Teradata. Links include:

Executive reports, case studies of customer experiences with Teradata, and thought leadership

Technical information, solutions, and expert advice

Press releases, mentions and media resources

Teradata.com

(6)
(7)

Table of Contents

Preface

. . . .3

Purpose . . . .3

Audience . . . .3

Supported Software Release . . . .3

Prerequisites . . . .3

Changes to This Book . . . .3

Additional Information . . . .4

References to Microsoft Windows and Linux . . . .5

Chapter 1: SQL Data Definition

. . . 13

Data Definition in SQL. . . 13

Data Definition Phrases . . . 15

Data Conversion . . . 19

Constraint Attributes . . . 20

Uniqueness Constraints . . . 20

CHECK Constraints . . . 21

Referential Constraints . . . 22

Chapter 2: Data Literals

. . . 23

Hexadecimal Byte Literals . . . 24

Overview of Numeric Literals . . . 26

Integer Literals. . . 29

Hexadecimal Integer Literals . . . 31

Decimal Literals. . . 33

Floating Point Literals. . . 35

Overview of Date and Time Literals . . . 36

DateTime Literals . . . 37

Date Literals. . . 38

(8)

Timestamp Literals . . . .44

Overview of Interval Literals . . . .49

INTERVAL YEAR Literals . . . .51

INTERVAL YEAR TO MONTH Literals . . . .52

INTERVAL MONTH Literals . . . .53

INTERVAL DAY Literals . . . .54

INTERVAL DAY TO HOUR Literals . . . .55

INTERVAL DAY TO MINUTE Literals . . . .56

INTERVAL DAY TO SECOND Literals . . . .57

INTERVAL HOUR Literals . . . .59

INTERVAL HOUR TO MINUTE Literals . . . .60

INTERVAL HOUR TO SECOND Literals . . . .61

INTERVAL MINUTE Literals . . . .62

INTERVAL MINUTE TO SECOND Literals . . . .63

INTERVAL SECOND Literals . . . .64

Character String Literals. . . .65

Hexadecimal Character Literals . . . .69

Unicode Character String Literals . . . .71

Graphic Literals . . . .75

Object Name Literals . . . .77

Hexadecimal Name Literals . . . .78

Unicode Delimited Identifier. . . .80

Chapter 3: Decimal/Numeric Data Types

. . . .83

ANSI/Teradata Synonyms for Numeric Types. . . .83

BYTEINT Data Type. . . .84

SMALLINT Data Type . . . .86

INTEGER Data Type . . . .88

BIGINT Data Type . . . .90

DECIMAL/NUMERIC Data Types . . . .92

FLOAT/REAL/DOUBLE PRECISION Data Types . . . .97

Floating Point Values are Inexact . . . .100

(9)

Chapter 4: DateTime and Interval Data Types

. . . 105

DateTime Fields . . . 105

Time Zones . . . 106

DATE Data Type . . . 109

DATE Formats . . . 118

TIME Data Type . . . 122

TIMESTAMP Data Type . . . 125

TIME WITH TIME ZONE Data Type . . . 129

TIMESTAMP WITH TIME ZONE Data Type . . . 132

TIME and TIMESTAMP Formats . . . 136

INTERVAL YEAR Data Type . . . 140

INTERVAL YEAR TO MONTH Data Type. . . 142

INTERVAL MONTH Data Type. . . 144

INTERVAL DAY Data Type . . . 146

INTERVAL DAY TO HOUR Data Type . . . 148

INTERVAL DAY TO MINUTE Data Type . . . 150

INTERVAL DAY TO SECOND Data Type . . . 152

INTERVAL HOUR Data Type. . . 155

INTERVAL HOUR TO MINUTE Data Type . . . 157

INTERVAL HOUR TO SECOND Data Type . . . 159

INTERVAL MINUTE Data Type . . . 162

INTERVAL MINUTE TO SECOND Data Type . . . 164

INTERVAL SECOND Data Type . . . 167

Chapter 5: Character and CLOB Data Types

. . . 171

Character Data . . . 171

CHARACTER Data Type . . . 173

VARCHAR Data Type . . . 178

LONG VARCHAR Data Type . . . 182

CLOB Data Type . . . 184

Default Case Sensitivity of Character Columns . . . 188

CASESPECIFIC Phrase . . . 189

UPPERCASE Phrase . . . 193

Teradata SQL Character Strings and Client Physical Bytes. . . 195

(10)

LATIN Server Character Set. . . .199

UNICODE Server Character Set . . . .200

GRAPHIC Server Character Set. . . .201

KANJISJIS Server Character Set . . . .202

KANJI1 Server Character Set . . . .203

Chapter 6: Byte and BLOB Data Types

. . . .207

Data Storage of Byte and BLOB Types . . . .207

BYTE Data Type . . . .208

VARBYTE Data Type . . . .210

BLOB Data Type . . . .212

Chapter 7: UDT Data Types

. . . .215

UDT Data Type . . . .216

Chapter 8: Default Value Control Phrases

. . . .221

Using Default Value Control Phrases . . . .221

COMPRESS Phrase. . . .222

NOT NULL Phrase . . . .227

DEFAULT Phrase . . . .228

WITH DEFAULT Phrase . . . .232

Chapter 9: Output Format Phrases

. . . .235

Data Display Default Formats . . . .235

FORMAT . . . .239

FORMAT Phrase and Character Formats. . . .243

FORMAT Phrase and NUMERIC Formats . . . .245

FORMAT Phrase and DateTime Formats . . . .261

FORMAT Phrase, DateTime Formats, and Japanese Character Sets . . . .269

Naming Columns and Expressions . . . .271

(11)

NAMED . . . 277

TITLE . . . 279

Appendix A: Notation Conventions

. . . 285

Syntax Diagram Conventions . . . 285

Character Shorthand Notation Used In This Book . . . 289

Predicate Calculus Notation Used in This Book . . . 290

Glossary

. . . 291

(12)
(13)

CHAPTER 1

SQL Data Definition

This chapter describes some of the general principles of SQL data definition. The specific topics described in the chapter are:

Data definition in SQL, including: Data type phrases

Data type attributes: ANSI and Teradata mode Column and table constraints, including:

Uniqueness constraints CHECK constraints Referential constraints

Data Definition in SQL

Introduction

Data definition phrases, also referred to as data description phrases, appear in CREATE TABLE or ALTER TABLE statements to define how to store data in the columns of a table, how to present the data in the results of queries, and whether to apply column-level integrity constraints.

You can also use data definition phrases in expressions to convert data to another type or modify data attributes.

Syntax

FF07D233 column_name data_type_attribute column_storage_attribute column_constraint_attribute data_type_declaration

(14)

Data Definition in SQL

where:

Using Data Definition

The following CREATE TABLE statement uses Teradata SQL data definition phrases to define the columns of the Employee table:

CREATE TABLE Employee

(EmpNo PRIMARY KEY SMALLINT FORMAT '9(5)' CHECK(EmpNo BETWEEN 1000 AND 32001),

Name VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, DeptNo SMALLINT FORMAT '999'

CHECK (DeptNo BETWEEN 100 AND 900),

JobTitle VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC, Salary DECIMAL(8,2) FORMAT 'ZZZ,ZZ9.99'

CHECK (Salary BETWEEN 1.00 AND 999000.00), YrsExp BYTEINT FORMAT 'Z9'

CHECK (YrsExp BETWEEN -99 AND 99), DOB DATE FORMAT ’MMMbDDbYYYY’ NOT NULL,

Sex CHAR CHARACTER SET LATIN UPPERCASE NOT NULL, Race CHAR CHARACTER SET LATIN UPPERCASE,

MStat CHAR CHARACTER SET LATIN UPPERCASE, EdLev BYTEINT FORMAT 'Z9'

CHECK (EdLev BETWEEN 0 AND 2) NOT NULL, HCap BYTEINT FORMAT 'Z9'

CHECK (HCap BETWEEN -99 AND 99) INDEX (Name) ;

Syntax element … Specifies …

data_type_declaration the data type of a column, such as BYTE or FLOAT. For more information, see “Data Type Phrases” on page 15.

data_type_attribute attributes for a column, such as a default value to insert when an INSERT statement omits the value.

For more information, see “Core Data Type Attributes” on page 17.

column_storage_attribute to compress certain values and nulls for one or more columns of a table.

For more information, see:

“Storage and Constraint Attributes” on page 18.

“COMPRESS Phrase” on page 222.

column_constraint_attribute column-level integrity constraints, such as PRIMARY KEY. For more information, see:

“Storage and Constraint Attributes” on page 18.

“Column and Table Constraints” on page 20.

“ALTER TABLE” and “CREATE TABLE” in SQL Reference: Data Definition Statements.

(15)

Data Definition Phrases The following SELECT statement uses Teradata SQL data definition phrases to modify the heading of the EmpNo column and the format of the results of the Salary column:

SELECT EmpNo (TITLE 'Employee Number'), Salary (FORMAT 'GLLZ(I)D9(F)')

FROM Employee;

Data Definition Phrases

Data Type Phrases

A data type phrase determines the type of data to store in a column of a table on Teradata Database. When you create a table, you must specify a data type phrase for each column. A column does not have a default data type.

You can also use data type phrases to specify data conversions in expressions.

Use the data type phrases in the following table to define the data type as numeric, character, datetime, interval, byte, or user-defined type (UDT).

Data Type ANSI SQL Teradata Extension to ANSI SQL

Byte BLOB[(n)] X BYTE[(n)] X VARBYTE[(n)] X Numeric BIGINT X BYTEINT X DATEa X DECIMAL [(n[,m])] X DOUBLE PRECISION X FLOAT [n] X INTEGER X NUMERIC [(n[,m])] X REAL X SMALLINT X

(16)

Data Definition Phrases

DateTime

DATEa X

TIME [(n)] X

TIME [(n)] WITH TIME ZONE X

TIMESTAMP [(n)] X

TIMESTAMP [(n)] WITH TIME ZONE X

Interval

INTERVAL X

INTERVAL DAY [(n)] X

INTERVAL DAY [(n)] TO HOUR X

INTERVAL DAY [(n)] TO MINUTE X

INTERVAL DAY [(n)] TO SECOND X

INTERVAL HOUR [(n)] X

INTERVAL HOUR [(n)] TO MINUTE X

INTERVAL HOUR [(n)] TO SECOND X

INTERVAL MINUTE [(n)] X

INTERVAL MINUTE [(n)] TO SECOND [(m)] X

INTERVAL MONTH X

INTERVAL SECOND [(n,[m])] X

INTERVAL YEAR [(n)] X

INTERVAL YEAR [(n)] TO MONTH X

Character CHAR[(n)] X CLOB X CHAR VARYING(n) X LONG VARCHAR X VARCHAR(n) X

(17)

Data Definition Phrases

For details on the different level of ANSI compliance in this release, see SQL Reference: Fundamentals.

Core Data Type Attributes

The following table lists the main Teradata SQL data type attributes. Graphicb GRAPHIC[(n)] X LONG VARGRAPHIC X VARGRAPHIC(n) X UDT udt_namec X

a. DATE is supported both in its Teradata form and in the preferred ANSI DateTime form. For new development, define DATE using ANSI DATE type.

b. The GRAPHIC types are equivalent to the type CHARACTER CHARACTER SET GRAPHIC, which is the form to use for all new development.

c. The CREATE TYPE statement determines the name of a UDT.

Data Type ANSI SQL Teradata Extension to ANSI SQL

Data Type Attribute ANSI Teradata Extension to ANSI

NOT NULL X UPPERCASE X [NOT] CASESPECIFIC X FORMAT quote_string X TITLE quote_string X AS name X NAMED name X DEFAULT value X DEFAULT USER X DEFAULT DATE X DEFAULT TIME X DEFAULT NULL X

(18)

Data Definition Phrases

Restrictions apply to some attributes. For example, you cannot use the WITH DEFAULT attribute with UDT data types. For further details, see:

Chapter 8: “Default Value Control Phrases”

Chapter 9: “Output Format Phrases”

SQL Reference: Data Definition Statements

Storage and Constraint Attributes

The following table lists Teradata SQL storage and constraint attributes.

WITH DEFAULT X

CHARACTER SET X

Data Type Attribute ANSI Teradata Extension to ANSI

Attribute

Family Data Type Attribute ANSI Teradata Extension to ANSI

Column Storage COMPRESS X COMPRESS NULL X COMPRESS constant_value X COMPRESS (value_list) X Column Constraints CONSTRAINT X CONSTRAINT UNIQUE X

CONSTRAINT PRIMARY KEY X

CONSTRAINT CHECK (boolean_condition) X CONSTRAINT REFERENCES table_name column_name

X

Table Constraints

FOREIGN KEY (column_name_list) X

PRIMARY KEY X UNIQUE X CHECK (boolean_expression) X REFERENCES table_name [(column_name_list)] X

(19)

Data Conversion Restrictions apply to some attributes. For example, you cannot use the COMPRESS attribute with LOB, INTERVAL, TIME, TIMESTAMP, VARBYTE, VARCHAR, or UDT data types. For further details, see:

Chapter 8: “Default Value Control Phrases”

SQL Reference: Data Definition Statements

Data Conversion

Introduction

You can use data definition phrases in expressions to convert data to another type or modify data attributes.

When used to modify the attributes of returned values, the data description phrase immediately follows the column being modified.

This syntax is called Teradata conversion syntax, and is non-ANSI.

For example, in the following SELECT statement, a TITLE phrase overrides the default heading (the column name) for EmpNo, and a FORMAT phrase modifies the display format defined for Salary data in the CREATE TABLE statement.

SELECT EmpNo (TITLE 'Emp#'), Salary (FORMAT '$$$,$$9.99') FROM Employee;

The expression “data type attributes” is non-ANSI, as are attributes such as TITLE and FORMAT.

You cannot use Teradata conversion syntax to convert data to a UDT type.

ANSI SQL-compliant Data Conversion

For applications that need to conform to ANSI as well as to modify attributes of a value, use the CAST function instead of Teradata conversion syntax. In this case, the modification is restricted to converting to an ANSI defined type.

To select Name as a fixed length field and Salary as an integer value:

SELECT CAST (Name AS CHAR(12)), CAST (Salary AS INTEGER) FROM Employee ;

Further Information

For information on Teradata conversion syntax and the CAST function, see SQL Reference: Functions and Operators.

HH01A019

(20)

Constraint Attributes

Constraint Attributes

Introduction

Constraint attributes specify integrity rules. Constraints can be any of the following types: Uniqueness (see “Uniqueness Constraints” on page 20).

CHECK (see “CHECK Constraints” on page 21).

Referential integrity (see “Referential Constraints” on page 22).

Column and Table Constraints

You can specify constraints during table creation and modification.

Column constraints apply to single columns as a part of the column definition. Column constraints include:

CHECK constraint definition clause on a single column PRIMARY KEY constraint definition clause on a single column REFERENCES constraint definition clause on a single column UNIQUE constraint definition clause

Table constraints apply to multiple columns. Table-level constraints include: CHECK constraint definition clause on multiple columns

REFERENCES constraint definition clause on multiple columns PRIMARY KEY constraint definition clause on multiple columns UNIQUE constraint definition clause on multiple columns FOREIGN KEY constraint definition clause

FOREIGN KEY constraint definitions must also specify a REFERENCES clause.

The full syntax for constraints is in “ALTER TABLE” and “CREATE TABLE” in SQL Reference: Data Definition Statements.

Uniqueness Constraints

Definition

A uniqueness constraint means the table cannot include two or more rows in which the values for the column or set of columns are identical.

Teradata Database supports the following uniqueness constraints: PRIMARY KEY

(21)

CHECK Constraints

PRIMARY KEY Constraint

A column or set of columns defined as PRIMARY KEY must also be NOT NULL. Teradata Database instantiates a PRIMARY KEY as a UNIQUE [PRIMARY] INDEX. Only one PRIMARY KEY can be defined for a table.

For more details, see:

“CREATE TABLE” in SQL Reference: Data Definition Statements.

“Keys” in SQL Reference: Fundamentals.

“Constraint Specifications” in Database Design.

UNIQUE Constraint

A UNIQUE column definition requires that data cannot be NULL. Queries are flagged as non-entry-level ANSI when the SQL flagger is enabled if any listed column is not also defined as NOT NULL.

Teradata Database instantiates UNIQUE as a unique primary or secondary index. Also see “Constraint Specifications” in Database Design.

CHECK Constraints

Purpose

CHECK constraints compare values of a field or fields in the same row with constants or other fields.

Usage Notes

CHECK constraints are applied to rows generated as candidates for INSERT and UPDATE operations.

You cannot specify CHECK constraints for Identity columns.

If the condition is met or the proposed INSERT or UPDATE contains NULLs, the operation is permitted.

If the condition is not met, an error is reported as a constraint violation. For details on the syntax, see “CREATE TABLE” in SQL Reference: Data Definition Statements.

(22)

Referential Constraints

Examples

CREATE TABLE stats_tbl (Id INTEGER

,Sex CHAR(1) ,EdLev INTEGER

,CHECK (Sex = 'F' OR Sex = 'M')

,CHECK ((EdLev >= 0) AND (EdLev <= 22)));

Referential Constraints

Purpose

Use referential constraints to indicate relationships between columns of different tables. There are three specific types of referential constraints.

Notes

You cannot specify REFERENCES constraints for Identity columns. For additional information about REFERENCES constraints, see:

“ALTER TABLE” and “CREATE TABLE” in SQL Reference: Data Definition Statements.

“Referential Integrity” in SQL Reference: Fundamentals.

“Constraint Specifications” in Database Design. Referential Constraint

Type DDL Definition Does It Enforce Referential Integrity? Level of Referential Integrity Enforcement

Referential constraint REFERENCES WITH NO CHECK OPTION No None Batch referential integrity constraint REFERENCES WITH CHECK OPTION Yes Transaction Referential integrity constraint

(23)

CHAPTER 2

Data Literals

Literals are values coded directly in the text of an SQL statement, view or macro definition text, or CHECK constraint definition text. In general, the system is able to determine the type of a literal by its form.

Literals are also referred to as constants. Topics described in this chapter include:

Hexadecimal Byte Literals Numeric Literals

Date and Time Literals Interval Literals Character Data Literals Graphic Literals Object Name Literals

(24)

Hexadecimal Byte Literals

Hexadecimal Byte Literals

Purpose

Declares a hexadecimal byte literal value.

Syntax

where:

ANSI Compliance

Hexadecimal byte literals are Teradata extensions to the ANSI SQL-2003 standard.

Definition

Hexadecimal literals consist of 0 to 62000 hexadecimal digits delimited by a matching pair of single quotes, where a hexadecimal digit is a character from 0 to 9, a to f, or A to F.

Data Types

The modifier following the XB determines the hexadecimal literal data type.

This syntax element … Specifies …

hexadecimal digits a string of hexadecimal digits, where a hexadecimal digit is a character from 0 to 9, a to f, or A to F.

V the hexadecimal literal is in byte variable format.

F the hexadecimal literal is in byte fixed format. This is the default if F or V is not specified.

1101A391 'hexadecimal digits' XB

V F

IF a hexadecimal literal uses this form … THEN the data type is …

'hexadecimal digits'XBV VARBYTE

'hexadecimal digits'XB 'hexadecimal digits'XBF

(25)

Hexadecimal Byte Literals

Usage Notes

Hexadecimal byte literal is the only form for entering a byte string.

Rules

Hexadecimal byte literals are represented by an even number of hexadecimal digits. Hexadecimal literals are extended on the right with zeros when required.

Consider the following table:

CREATE TABLE bvalues (b1 BYTE(2));

Suppose you insert the hexadecimal byte literal 'C1C'XB into column b1: INSERT bvalues ('C1C'XB);

The value is extended on the right with zeros: SELECT * FROM bvalues;

b1 ----C1C0

Example

Suppose the column CodeVal has been defined as BYTE(2).

CREATE TABLE bvalues (IDVal INTEGER, CodeVal BYTE(2)); To insert a BYTE string as a hexadecimal literal, use the following form:

INSERT bvalues (112193, '7879'XB) ;

To select those rows from CodeVal, specify the conditional like this: SELECT IDVal FROM bvalues WHERE CodeVal = '7879'XB ;

(26)

Overview of Numeric Literals

Overview of Numeric Literals

Definition

A numeric literal is a string of 1 to 40 characters selected from the following: plus sign

minus sign digits 0 through 9 decimal point

Numeric literals are also referred to as numeric constants.

Note: Teradata Database also supports a hexadecimal form of numeric literals to represent integer values. For details, see “Hexadecimal Integer Literals” on page 31.

Types of Numeric Literals

There are three kinds of numeric literals:

Integers (see “Integer Literals” and “Hexadecimal Integer Literals”) Decimals (see “Decimal Literals”)

Floating point numbers (see “Floating Point Literals”)

Examples

The following are examples of valid numeric literals.

Type Examples

BYTEINT 127 -36 -128

SMALLINT 32767 -12000 -32768

INTEGER 32768 -60400 2147483647

DECIMAL 0.0 -23554367273149967931. 2147483650

(27)

Overview of Numeric Literals

Examples of Nonvalid Numeric Literals

The following are examples of nonvalid numeric literals.

For the rules on what constitutes valid numeric literals, see the following sections: “Integer Literals” on page 29

“Decimal Literals” on page 33

“Floating Point Literals” on page 35

Determining the Data Type of a Numeric Literal

The data type of a numeric literal is determined by the range of the literal value. The type used is the smallest that can contain the value.

For example, the data type of the numeric literal 127 is BYTEINT because it is the smallest type that can fit the value 127.

For decimal literals, the total number of digits determine the precision and the number of digits to the right of the decimal point determine the scale.

Implicit Conversion of Numeric Literals

Depending on the kind of operation performed or the type of column in which a value is to be stored, SQL may convert numeric literal constants from one numeric data type to another. If a literal is outside the range for its required type, an error is reported during conversion. For more information on numeric to numeric data type conversions, see SQL Reference: Functions and Operators.

Converting Character Strings to Numeric Literals

Character data can contain a string that is intended to be interpreted as a numeric value (for example, '15'). In such cases, Teradata Database attempts to convert the string to a numeric value whenever the context makes such a conversion necessary. If the character string does not represent a valid numeric value, an error is reported.

This literal is not valid … Because it contains …

123456789012345678901234567890123456789 more than 38 digits.

$20,000.00 a dollar sign and a comma.

-38.7E2945 four digits following the E.

FOR details on … SEE …

the range of values of integer literals “Integer Literal Data Types” on page 29. determining the scale and precision of a decimal literal “Scale and Precision” on page 33.

(28)

Overview of Numeric Literals

When data in a character column must be compared with data in a numeric column, the character data is converted to numeric before the comparison is made. Note that this can result in repeated conversions during data access.

If numeric data is defined and stored as a character string in a character column, and a SELECT operation uses a full table scan to compare the character column with a numeric literal, then the character column is converted to numeric in every row of the table. For more information on character to numeric data type conversions, see SQL Reference: Functions and Operators.

(29)

Integer Literals

Integer Literals

Purpose

Declares literal strings of integer numbers in an expression.

Syntax

where:

Components of Integer Literals

Integer literals consist of an optional sign followed by a sequence of digits.

Integer Literal Data Types

The data type of an integer literal is determined by the range of the literal value. The type used is the smallest that can contain the value.

A numeric literal that is outside the range of the INTEGER type is assigned to the DECIMAL type, unless it is outside the range of values that a DECIMAL type can represent. For more information, see “Decimal Literals” on page 33.

Syntax element … Specifies …

± an optional sign.

The default is +.

n any valid integer.

±

n

KR01A141 ± n

IF an integer literal fits in this range of values … THEN the data type of the integer literal is …

-128 to 127 BYTEINT

-32768 to -129 SMALLINT

128 to 32767

-2147483648 to -32769 INTEGER

(30)

Integer Literals

If you need a numeric literal that is outside the range of the INTEGER type to be of a type other than DECIMAL, you can explicitly cast the literal to the desired type. For example, you can use the CAST function to explicitly cast a numeric literal to BIGINT:

SELECT ProdID FROM PartsTbl

WHERE CustID = CAST(9876543210 AS BIGINT);

Examples

The following numbers are examples of integer literals. 12

0 -5

Related Topics

FOR information on … SEE …

BYTEINT data types “BYTEINT Data Type” on page 84. SMALLINT data types “SMALLINT Data Type” on page 86. INTEGER data types “INTEGER Data Type” on page 88.

(31)

Hexadecimal Integer Literals

Hexadecimal Integer Literals

Purpose

Declares a hexadecimal integer literal value.

Syntax

where:

ANSI Compliance

Hexadecimal literals are Teradata extensions to the ANSI SQL-2003 standard.

Definition

Hexadecimal literals consist of 0 to 62000 hexadecimal digits delimited by a matching pair of single quotes, where a hexadecimal digit is a character from 0 to 9, a to f, or A to F.

This syntax element … Specifies …

hexadecimal digits a string of hexadecimal digits, where a hexadecimal digit is a character from 0 to 9, a to f, or A to F.

1 that the hexadecimal literal represents integers with a BYTEINT data type. 2 that the hexadecimal literal represents integers with a SMALLINT data

type.

4 that the hexadecimal literal represents integers with an INTEGER data type. This is the default if 1, 2, or 4 is not specified.

8 that the hexadecimal literal represents integers with a BIGINT data type. 1101A390 'hexadecimal digits' X I 1 2 4 8

(32)

Hexadecimal Integer Literals

Data Types

The modifiers following the X determine the hexadecimal literal data type.

Rules

Hexadecimal integer literals are represented by an odd or even number of hexadecimal digits. The hexadecimal literal is right-justified. For example, the value 1000 can be expressed as any of the following:

'3e8'X '0003e8'X '000003e8'X

Example

Consider the following table:

CREATE TABLE id_pairs (region_id INTEGER, region CHAR(20));

Submit the following statement to find the value of the region column where the region_id is a hexadecimal value of 3e8:

SELECT region FROM id_pairs WHERE region_id = '3e8'X;

IF a hexadecimal literal uses this form … THEN the data type is …

'hexadecimal digits'X 'hexadecimal digits'XI 'hexadecimal digits'XI4

INTEGER

'hexadecimal digits'XI2 SMALLINT

'hexadecimal digits'XI1 BYTEINT

(33)

Decimal Literals

Decimal Literals

Purpose

Declares literal strings of decimal numbers in an expression.

Syntax

where:

Components of Decimal Literals

Decimal literals consist of the following components, reading from left-to-right: 1 Optional sign

2 Sequence of digits (including none) 3 Decimal point

4 Optional sequence of digits.

Decimal Literal Data Types

Decimal literals include the following types: DECIMAL

NUMERIC

Scale and Precision

The total number of digits in a decimal literal determine the precision and the number of digits to the right of the decimal point determine the scale. Leading and trailing zeros are included in the counts. The precision cannot exceed 38.

A numeric literal that is outside the range of the INTEGER type is assigned to

DECIMAL(n, 0), where n is the number of digits in the literal, excluding leading zeros.

Syntax element … Specifies …

± an optional sign.

The default is +.

n any valid integer.

KR01A143

±n.

±.n

(34)

Decimal Literals

Examples

The following numbers are examples of decimal literals. 3.14159 253. -88.234 .29 2147483650

Related Topics

FOR information on … SEE …

(35)

Floating Point Literals

Floating Point Literals

Purpose

Declares literal strings of floating point numbers in an expression.

Syntax

where:

Components of Floating Point Literals

Floating point literals consist of the following components, reading from left-to-right: 1 Optional sign

2 Sequence of digits (including none) representing the whole number portion of the mantissa

3 Optional decimal point

4 Sequence of digits (including none) representing the fractional portion of the mantissa 5 Literal character E

6 Optional sign

7 Sequence of digits (including none) representing the exponent

Syntax element … Specifies …

± an optional sign.

The default is +.

n any valid integer representing the whole and, optionally, fractional component of the mantissa.

The total number of digits cannot exceed 15, excluding leading zeros in the whole component of the mantissa.

E the symbol indicating that what follows is the exponent for the number.

m any valid integer number representing the exponent for the number. The total number of digits cannot exceed three, including leading zeros. KR01A142

±nm

±n.m

±.nm

(36)

Overview of Date and Time Literals

Floating Point Literal Data Types

Floating point literals are treated as having a FLOAT data type, which is treated as equivalent to:

REAL

DOUBLE PRECISION

Examples

The following numbers are examples of floating point literals. 1E100

3.14E-10 6.023E23

Related Topics

Overview of Date and Time Literals

Date and time literals declare date, time, or timestamp values in an SQL expression.

ANSI DateTime Literals

ANSI SQL provides DateTime literals to represent date, time, and timestamp values. There are three types of ANSI SQL DateTime literals:

DATE

TIME

TIMESTAMP

Teradata SQL Date and Time Literals

Teradata also provides a non-ANSI extension to DateTime functionality.

Teradata SQL literals used with date or time values are simple quote strings and are

interpreted as character data. These are converted to a date or time value based on the context, which is usually provided by a FORMAT clause.

FOR information on … SEE …

FLOAT data types

REAL data types

DOUBLE PRECISION data types

“FLOAT/REAL/DOUBLE PRECISION Data Types” on page 97.

potential problems associated with floating point values in comparisons and computations

(37)

DateTime Literals The existing Teradata SQL operations on character string literals used to represent date and time values are supported as a non-ANSI extension to DateTime functionality.

While Teradata SQL date and time literals come in a variety of formats for the character representations of date and time values, and so cannot be restricted to a default or standard format, ANSI DateTime literals are restricted to a strict set of formats.

Existing functionality for Teradata SQL date literals is preserved.

For example, suppose a column is defined as DATE with a format of 'YY/MM/DD'. If the value '97/12/31' is encountered as a character literal assigned to a DATE column, the process works just as it did prior to the introduction of ANSI DateTime formats because the character literal is implicitly cast to the DATE format.

Unless explicitly stated, this chapter only discusses ANSI DateTime literals.

DateTime Literals

Introduction

The ANSI SQL DateTime literals provide DateTime values in source text, supporting a means for declaring values for DATE, TIME, and TIMESTAMP data types.

ANSI DateTime Literals Require a Keyword

ANSI SQL DateTime literals differ from other SQL literals in that they are always prefaced by a keyword or keywords.

Here is an example showing the TIMESTAMP keyword prefacing a timestamp literal: TIMESTAMP '1999-07-01 15:00:00-08:00'

(38)

Date Literals

Date Literals

Purpose

Declares a date value in ANSI DATE format in an expression.

ANSI DATE literal is the preferred format for date constants. All date operations accept this format.

Syntax

where:

Usage Notes

Date literals consist of the word DATE followed by a character string literal. This character string specifies the date value.

The year, month, and day components of the quotestring literal must be separated by hyphens.

Syntax element … Specifies …

string a 10-character string enclosed in single quotes in the following form: YYYY-MM-DD

This string … Represents …

YYYY year.

The valid range is 0001 through 9999, inclusive. You must specify all four digits.

MM month.

The valid range is 01 through 12, inclusive. You must specify both digits.

DD day.

The valid range is 01 through 31, inclusive, constrained by Gregorian calendar definitions.

You must specify both digits. 1101A036

(39)

Date Literals

Data Type

DATE

Example

The following example selects all classes from the Classes table that start on January 6, 1998. SELECT *

FROM CLASSES

WHERE startdate = DATE '1998-01-06';

Related Topics

FOR information on … SEE …

(40)

Time Literals

Time Literals

Purpose

Declares a time value in an expression.

Syntax

where string specifies an 8- to 21-character string enclosed in single quotes in one of four formats.

This format... Represents...

hh:mi:ss time with no fractional seconds digits or Time Zone.

This string... Represents...

hh hour of the day.

The valid range is 00–23, inclusive. You must specify both digits. mi minute of the hour.

The valid range is 00–59, inclusive. You must specify both digits.

ss seconds.

The valid range is 00–61. You must specify both digits. 1101A021

(41)

Time Literals

hh:mi:sssignhh:mi time with a specified Time Zone, but no fractional seconds digits.

This string... Represents...

hh hour of the day.

The valid range is 00–23, inclusive, and you must specify both digits.

mi minute of the hour.

The valid range is 00–59, inclusive, and you must specify both digits.

ss seconds.

The valid range is 00–61, and you must specify both digits.

signhh:mi hours and minutes in the Time Zone offset. The valid range is -12:59 through +13:00, inclusive.

sign is + or

-hh:mi:ss.ssssss time with up to six fractional seconds digits, but no Time Zone.

This string... Represents...

hh hour of the day.

The valid range is 00–23, inclusive, and you must specify both digits.

mi minute of the hour.

The valid range is 00–59, inclusive, and you must specify both digits.

ss.ssssss seconds.

The valid range for the first two digits is 00–61. You must specify both digits.

You can specify from one to six fractional digits.

(42)

Time Literals

Usage Notes

The colons are required between the first three elements, and the decimal point is required if fractional seconds are specified.

Data Types

Example 1: hh:mi:ss Format

The following example selects all classes from the Classes table that start at 3:30 PM. SELECT *

FROM Classes

WHERE start_time = TIME '15:30:00';

hh:mi:ss.sssssssignhh:mi time with up to six fractional seconds and a Time Zone offset.

This string... Represents...

hh hour of the day.

The valid range is 00–23, inclusive. You must specify both digits. mi minute of the hour.

The valid range is 00–59, inclusive. You must specify both digits. ss.ssssss seconds.

The valid range for the first two digits is 00–61. You must specify both digits.

You can specify from one to six fractional digits. signhh:mi hours and minutes in the Time Zone offset.

The valid range is -12:59 through +13:00, inclusive.

sign is + or

-This format... Represents...

IF the format of the Time literal is … THEN the data type is …

hh:mi:ss TIME(0).

hh:mi:sssignhh:mi TIME(0) WITH TIME ZONE.

hh:mi:ss.ssssss TIME(n), where n is the number of fractional seconds digits. hh:mi:ss.sssssssignhh:mi TIME(n) WITH TIME ZONE, where n is the number of

(43)

Time Literals

Example 2: hh:mi:sssignhh:mi Format

SELECT * FROM Classes

WHERE start_time = TIME '10:37:12-08:00';

Example 3: hh:mi:ss.ssssss Format

SELECT * FROM Classes

WHERE start_time = TIME '10:36:02.123456';

Example 4: hh:mi:ss.sssssssignhh:mi Format

SELECT Customer_ID FROM Messages

WHERE start_time = TIME '21:17:35.123456+07:30'

Related Topics

FOR information on … SEE …

TIME data types “TIME Data Type” on page 122.

TIME WITH TIME ZONE data types “TIME WITH TIME ZONE Data Type” on page 129.

(44)

Timestamp Literals

Timestamp Literals

Purpose

Declares a timestamp value in an expression.

Syntax

where string specifies a character string in single quotes in one of four formats.

This format... Represents...

YYYY-MM-DD hh:mi:ss timestamp with no time zone or fractional seconds digits.

This string... Represents...

YYYY year.

The valid range is from 0001–9999, and you must specify all four digits.

MM month.

The valid range is from 01–12, and you must specify both digits.

DD day.

The valid range is from 01–31, constrained by Gregorian calendar definitions.

You must specify both digits, and follow them by a single pad character.

hh hour of the day.

The valid range is from 00–23, and you must specify both digits.

mi minute of the hour.

The valid range is from 00–59, and you must specify both digits.

ss seconds.

The valid range is 00–61, and you must specify both digits.

1101A022 TIMESTAMP 'string '

(45)

Timestamp Literals

This format... Represents...

YYYY-MM-DD hh:mi:sssignhh:mi a timestamp with a specified time zone offset, but no fractional seconds digits.

This string... Represents...

YYYY year.

The valid range is from 0001–9999, and you must specify all four digits.

MM month.

The valid range is from 01–12, and you must specify both digits.

DD day.

The valid range is from 01–31, constrained by Gregorian calendar definitions.

You must specify both digits, and follow them by a single pad character. hh hour of the day.

The valid range is 00–23, inclusive, and you must specify both digits.

mi minute of the hour.

The valid range is 00–59, inclusive, and you must specify both digits.

ss seconds.

The valid range is 00–61, and you must specify both digits.

signhh:mi hours and minutes in the Time Zone offset.

The valid range is -12:59 through +13:00, inclusive.

(46)

-Timestamp Literals

This format... Represents...

YYYY-MM-DD hh:mi:ss.ssssss a timestamp with up to six fractional seconds digits, but no Time Zone.

This string... Represents...

YYYY year.

The valid range is from 0001–9999, and you must specify all four digits.

MM month.

The valid range is from 01–12, and you must specify both digits.

DD day.

The valid range is from 01–31, constrained by Gregorian calendar definitions.

You must specify both digits, and follow them by a single pad character.

hh hour of the day.

The valid range is 00–23, inclusive, and you must specify both digits.

mi minute of the hour.

The valid range is 00–59, inclusive, and you must specify both digits.

ss.ssssss seconds.

The valid range for the first two digits is 00–61. You must specify both digits. You can specify from one to six fractional digits.

(47)

Timestamp Literals

This format... Represents...

YYYY-MM-DD hh:mi:ss.sssssssignhh:mi a timestamp with up to six fractional seconds and a time zone offset.

This string... Represents...

YYYY year.

The valid range is from 0001–9999, and you must specify all four digits.

MM month.

The valid range is from 01–12, and you must specify both digits.

DD day.

The valid range is from 01–31, constrained by Gregorian calendar definitions.

You must specify both digits. DD must always be followed by a single pad character.

hh hour of the day.

The valid range is from 00–23, and you must specify both digits. mi minute of the hour.

The valid range is from 00–59, and you must specify both digits. ss.ssssss seconds.

The valid range for the first two digits is 00–61. You must specify both digits.

You can specify from one to six fractional digits.

signhh:mi hours and minutes in the Time Zone offset.

The valid range is -12:59 through +13:00, inclusive.

(48)

-Timestamp Literals

Data Types

Example 1: YYYY-MM-DD hh:mi:ss Format

The following example selects all classes from the Classes table that are timestamped November 23 2006 at 3:30:23 PM.

SELECT * FROM Classes

WHERE Time_stamp = TIMESTAMP '2006-11-23 15:30:23';

Example 2: YYYY-MM-DD hh:mi:sssignhh:mi Format

SELECT * FROM Classes

WHERE Time_stamp = TIMESTAMP '2002-01-01 10:37:12-08:00'

Example 3: YYYY-MM-DD hh:mi:ss.ssssss Format

SELECT * FROM Classes

WHERE Time_stamp = TIMESTAMP '1995-07-31 10:36:02.123456'

Example 4: YYYY-MM-DD hh:mi:ss.sssssssignhh:mi Format

SELECT * FROM Classes

WHERE Time_stamp = TIMESTAMP '1492-10-27 21:17:35.456123+07:30'

Related Topics

IF the format of the Timestamp literal is … THEN the data type is …

YYYY-MM-DD hh:mi:ss TIMESTAMP(0).

YYYY-MM-DD hh:mi:sssignhh:mi TIMESTAMP(0) WITH TIME ZONE.

YYYY-MM-DD hh:mi:ss.ssssss TIMESTAMP(n), where n is the number of fractional seconds digits.

YYYY-MM-DD hh:mi:ss.sssssssignhh:mi TIMESTAMP(n) WITH TIME ZONE, where n is the number of fractional seconds digits.

FOR information on … SEE …

TIMESTAMP data types “TIMESTAMP Data Type” on page 125.

TIMESTAMP WITH TIME ZONE data types “TIMESTAMP WITH TIME ZONE Data Type” on page 132.

(49)

Overview of Interval Literals

Overview of Interval Literals

Introduction

Interval literals provide a means for declaring interval values in expressions.

Interval literals differ from other SQL literals in that keywords introduce and follow them.

General Syntax

where:

Interval Literal Categories

Interval literals fall under one of two categories. You cannot mix literals that fall under one category with literals that fall under the other category.

Year-Month Day-Time

Syntax element … Specifies …

sign an optional minus sign to designate a negative interval. The default is a positive interval.

Note that the sign must be outside the quotation marks that enclose string.

string a quoted character string.

interval_qualifier a keyword or keywords indicating the Interval literal type. Possible values are:

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

You cannot specify precision with the interval_qualifier. 1101A034

INTERVAL sign

interval_qualifier 'string'

(50)

Overview of Interval Literals

Interval Literal Data Types

The data type for a literal is derived directly from the interval_qualifier.

Note: You cannot specify precision with any of the interval_qualifier types.

Year-Month Literals Day-Time Literals

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

(51)

INTERVAL YEAR Literals

INTERVAL YEAR Literals

Purpose

Declares an Interval Year value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL YEAR literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign for the interval within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL YEAR

For details on the INTERVAL YEAR type, see “INTERVAL YEAR Data Type” on page 140.

Example

This example adds an interval of -2 years to the current system date. (For this example, assume the current system date is 11-03-1999.)

SELECT INTERVAL -'2' YEAR + CURRENT_DATE; (-2+Date)

---1997/11/03

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

Note that the sign must be outside the quotation marks that enclose string.

string one to four digits representing years. 1101A023

INTERVAL

sign

YEAR 'string '

(52)

INTERVAL YEAR TO MONTH Literals

INTERVAL YEAR TO MONTH Literals

Purpose

Declares an Interval Year to Month value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL YEAR TO MONTH literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign for the interval within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL YEAR TO MONTH

For details on the INTERVAL YEAR TO MONTH type, see “INTERVAL YEAR TO MONTH Data Type” on page 142.

Example

This example adds an interval of two years and six months to the current system date. (For this example, assume the current system date is 1999-11-03.)

SELECT CURRENT_DATE + INTERVAL '2-06' YEAR TO MONTH; ( 2-06+Date)

---2002/05/03

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

Note that the sign must be outside the quotation marks that enclose string.

string one to four digits representing the number of years, optionally followed by a hyphen and two digits representing the number of months.

1101A024

INTERVAL

sign

YEAR TO MONTH 'string'

(53)

INTERVAL MONTH Literals

INTERVAL MONTH Literals

Purpose

Declares an Interval Month value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL MONTH literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign for the interval within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL MONTH

For details on the INTERVAL MONTH type, see “INTERVAL MONTH Data Type” on page 144.

Example

This example adds an interval of six months to the current system date. (For this example, assume the current system date is 1999-11-03.)

SELECT (INTERVAL '6' MONTH) + CURRENT_DATE; ( 6+Date)

---2000/05/03

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

The sign must be outside the quotation marks enclosing string.

string one to four digits representing months. 1101A025

INTERVAL

sign

MONTH 'string '

(54)

INTERVAL DAY Literals

INTERVAL DAY Literals

Purpose

Declares an Interval Day value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL DAY literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign for the interval within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL DAY

For details on the INTERVAL DAY type, see “INTERVAL YEAR Data Type” on page 140.

Example

This example adds an interval of -30 days to the current system date. (For this example, assume the current system date is 1999-11-03).

SELECT INTERVAL -'30' DAY + CURRENT_DATE; (-30+Date)

---1999/10/04

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

Note that the sign must be outside the quotation marks that enclose string.

string one to four digits representing the number of days. 1101A026

INTERVAL sign

DAY 'string'

(55)

INTERVAL DAY TO HOUR Literals

INTERVAL DAY TO HOUR Literals

Purpose

Declares an Interval Day to Hour value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL DAY TO HOUR literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL DAY TO HOUR

For details on the INTERVAL DAY TO HOUR type, see “INTERVAL DAY TO HOUR Data Type” on page 148.

Example

This example adds an interval of 1 day and 12 hours to the current system timestamp. SELECT INTERVAL '1 12' DAY TO HOUR + CURRENT_TIMESTAMP;

( 1 12+Current TimeStamp) ---1999-11-05 02:32:19.770000+00:00

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

The sign must be outside the quotation marks that enclose string.

string one to four digits representing the number of days, optionally followed by a pad character and two digits representing the number of hours.

1101A027 INTERVAL

sign

DAY TO HOUR 'string '

(56)

INTERVAL DAY TO MINUTE Literals

INTERVAL DAY TO MINUTE Literals

Purpose

Declares an Interval Day to Minute value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL DAY TO MINUTE literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL DAY TO MINUTE

For details on the INTERVAL DAY TO MINUTE type, see “INTERVAL DAY TO MINUTE Data Type” on page 150.

Example

This example adds a 30 day, 12 hour, and 30 minute interval to the current system timestamp. SELECT INTERVAL '30 12:30' DAY TO MINUTE + CURRENT_TIMESTAMP;

( 30 12:30+Current TimeStamp) ---1999-12-04 03:14:26.330000+00:00

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

The sign must be outside the quotation marks that enclose string.

string one to four digits representing the number of days, optionally followed by a pad character and two digits representing the number of hours, optionally followed by a colon and two digits representing the number of minutes.

1101A028

INTERVAL

sign

DAY TO MINUTE 'string'

(57)

INTERVAL DAY TO SECOND Literals

INTERVAL DAY TO SECOND Literals

Purpose

Declares an Interval Day to Second value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL DAY TO SECOND literals are partly ANSI SQL-2003-compliant.

In the ANSI definition, the optional sign is within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL DAY TO SECOND

For details on the INTERVAL DAY TO SECOND type, see “INTERVAL DAY TO SECOND Data Type” on page 152.

Example

This example adds an interval of 30 days, 12 hours, 30 minutes, and 30.5 seconds to the current system timestamp.

SELECT INTERVAL '30 12:30:30.5' DAY TO SECOND + CURRENT_TIMESTAMP;

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

The sign must be outside the quotation marks that enclose string.

string one to four digits representing the number of days, optionally followed by a pad character and two digits representing the number of hours, optionally followed by a colon and two digits representing the number of minutes, optionally followed by a colon and two digits representing the number of seconds and zero to six digits representing fractional seconds.

1101A029 INTERVAL

sign

DAY TO SECOND 'string '

(58)

INTERVAL DAY TO SECOND Literals

The result looks like this:

( 30 12:30:30.5+Current TimeStamp) ---1999-12-04 03:19:27.780000+00:00

(59)

INTERVAL HOUR Literals

INTERVAL HOUR Literals

Purpose

Declares an Interval Hour value in an expression.

Syntax

where:

ANSI Compliance

INTERVAL HOUR literals are partly ANSI SQL-2003-compliant.

The ANSI definition places the optional sign within the quotation marks; the Teradata implementation places the optional sign outside the quotation marks.

Type

INTERVAL HOUR

For details on the INTERVAL HOUR type, see “INTERVAL HOUR Data Type” on page 155.

Example

This example subtracts an interval of 2000 hours from the current system timestamp. SELECT CURRENT_TIMESTAMP - INTERVAL '2000' HOUR;

(Current TimeStamp(6)- 2000) ---2003-01-28 09:27:08.180000+00:00

Syntax element … Specifies …

sign an optional minus sign to indicate a negative interval. The default is a positive interval.

The sign must be outside the quotation marks that enclose string.

string one to four digits representing the number of hours. 1101A030

INTERVAL

sign

HOUR 'string '

Figure

Graphic b GRAPHIC[(n)] X LONG VARGRAPHIC X VARGRAPHIC(n) X UDT udt_name c X
Table  Constraints
GRAPHIC is a Teradata extension to the ANSI SQL-2003 standard.
GRAPHIC Data
+3

References

Related documents

• Individual: Students respond in writing to prompts using Microsoft Word; students observe and record observations of three different people; students analyze a character and

In 2008 ConocoPhillips carried out its first Energy Efficiency Opportunities (EEO) assessment of the Darwin Liquefied Natural Gas facility (DLNG) to identify opportunities to reduce

However, in case such drawback is claimed for inputs not specified in SION, the applicant should have indicated clearly details of such duty paid inputs also in

Prepared (Spend 2 Adversity Tokens to just happen to have one commonplace item with you) Skilled Ranger (You may automatically succeed at any check with a difficulty of 12 or

Research priorities identi fied included: (i) improved parameterisation of end to end ecosystem model components, processes and feedbacks through expanded biological observations

This essay proceeds as follows: Part I discusses the role of consent in contemporary contract law theory, arguing that both economic theories and autonomy theories of contract

PRINCE2 methodology Classical approach Construction Contractor International bidding procedures Professional consulting service Contract -Renovation of existing

Teachers enhance student success by using their expertise with regard to their course’s learning objects to help students set realistic goals adapted to their situations and get