03 - SQL Server Data Types and Functions
03 - SQL Server Data Types and Functions
DISTINCT, Aliases, scalar functions and CASE, using JOIN and MERGE; Filtering and sorting data, NULL
values
Introduce data types, data type usage, converting data types, understanding SQL Server function types
Aggregate functions, GROUP BY and HAVING clauses, subqueries; self-contained, correlated, and EXISTS; Views, inline-table
valued functions, and derived tables
| Lunch Break
Exact numeric
Unicode characters
Approximate numeric
Binary strings
Other
Character strings
Data type
Range
Storage (bytes)
DECLARE
tinyint @mydecimal
0 toAS
255DECIMAL(8,2)
smallint
int
-32,768 to 32,768
2^31 (-2,147,483,648) to
2^31-1 (2,147,483,647)
2
4
Data Type
Range
float(n)
Bigint
Depends on value of n, 4 or 8
8
bytes
bit
real
(+/- 9 quintillion)
Storage (bytes)
decimal/numeric
5-17
money
-922,337,203,685,477.5808 to
922,337,203,685,477.5807
smallmoney
- 214,748.3648 to 214,748.3647
Data Type
Range
Storage (bytes)
binary(n)
1-8000 bytes
n bytes
varbinary(n)
1-8000 bytes
n bytes + 2
varbinary(MAX)
actual length + 2
Data Type
Range
Storage
(bytes)
Remarks
rowversion
Auto-generated
uniqueidentifier
Auto-generated
16
xml
0-2 GB
0-2 GB
cursor
N/A
N/A
hierarchyid
N/A
Depends on
content
Represents position in a
hierarchy
sql_variant
0-8000 bytes
Depends on
content
table
N/A
N/A
PARSE element
Comment
String_value
Data_type
Culture
Data Type
Range
Storage
CHAR(n),
NCHAR(n)
1-8000 characters
n bytes, padded
2*n bytes, padded
VARCHAR(n), NVARCHAR(n)
1-8000 characters
n+2 bytes
(2*n) +2 bytes
VARCHAR(MAX),
NVARCHAR(MAX)
1-2^31-1 characters
Actual length + 2
Function
Syntax
Remarks
SUBSTRING()
LEFT(), RIGHT()
LEN(), DATALENGTH()
LEN ( string_expression )
DATALENGTH ( expression )
CHARINDEX()
CHARINDEX ( expressionToFind,
expressionToSearch )
REPLACE()
UPPER(), LOWER()
UPPER ( character_expression )
LOWER ( character_expression )
Data Type
Storage (bytes)
Date Range
DATETIME
January 1, 1753 to
December 31, 9999
SMALLDATETIME
DATETIME2
Accuracy
3-1/3 milliseconds
'YYMMDD hh:mm:ss:nnn'
1 minute
'YYMMDD hh:mm:ss:nnn'
6 to 8
January 1, 0001 to
December 31, 9999
100 nanoseconds
DATE
January 1, 0001 to
December 31, 9999
1 day
TIME
3 to 5
DATETIMEOFFSET
8 to 10
January 1, 0001 to
December 31, 9999
Recommended
Entry Format
'YYMMDD
hh:mm:ss.nnnnnn'
'YYYY-MM-DD'
100 nanoseconds
'hh:mm:ss:nnnnnnn'
100 nanoseconds
'YY-MM-DD
hh:mm:ss:nnnnnnn [+|]hh:mm'
Data Type
Language-Neutral Formats
Examples
DATETIME
'YYYYMMDD hh:mm:ss.nnn'
'YYYY-MM-DDThh:mm:ss.nnn'
'YYYYMMDD'
'20120212 12:30:15.123'
'2012-02-12T12:30:15.123'
'20120212'
SMALLDATETIME
'YYYYMMDD hh:mm'
'YYYY-MM-DDThh:mm'
'YYYYMMDD'
'20120212 12:30'
'2012-02-12T12:30'
'20120212'
DATETIME2
'YYYY-MM-DD'
'YYYYMMDD hh:mm:ss.nnnnnnn'
'YYYY-MM-DD hh:mm:ss.nnnnnnn'
'YYYY-MM-DDThh:mm:ss.nnnnnnn'
'YYYYMMDD'
'YYYY-MM-DD'
'20120212 12:30:15.1234567'
'2012-02-12 12:30:15.1234567'
'2012-02-12T12:30:15.1234567'
'20120212'
'2012-02-12'
Syntax
Syntax
Syntax
Return Type
Remarks
Return Type
Remarks
Return
Remarks
DATEADD(datepart,
interval,
date)
Adds
interval
to date,
Type
DATEFROMPARTS(year,
month,
day)
date
datetime
Current
date and
time.
No time
zonereturns
offset.same
datatype as date
DATENAME()
DATENAME(datepart, date)
nvarchar
Use 'year', 'month', 'day' as datepart
EOMONTH()
EOMONTH(start_date,
interval)
Returns
last
day of
month as start date,
DATETIMEFROMPARTS()
DATETIMEFROMPARTS(year,
month,
day,
hour,
datetime
GETUTCDATE()
datetime
Current
date
and
time in
UTC.
optional offset
minute,
seconds, milliseconds)
DATEPART()
DATEPART(datepart,
date)
int
Usewith
'year',
'month', 'day' as datepart
CURRENT_TIMESTAMP()
datetime
Current
date
and
time.
No time zone
offset.
SWITCHOFFSET()
SWITCHOFFSET(datetimeoffset,month, day,Changes
offset
DATETIME2FROMPARTS()
DATETIME2FROMPARTS(year,
hour, time zone
Datetime2
ANSI
standard.
time_zone)
DAY()
DAY(datevalue)minute,
int precision)
seconds, fractions,
SYSDATETIME()
datetime2
Current date and
time. No
time zone
TODATETIMEOFFSET()
TODATETIMEOFFSET(expression,
Converts
intooffset
datetimeoffset
DATETIMEOFFSETFROMPARTS()
DATETIMEOFFSETFROMPARTS(year,
month,
day, datetime2
datetime
MONTH()
MONTH(datevalue)
int
time_zone)
hour, minute, seconds, fractions, hour_offset,
STSUTCDATETIME()
datetime2
Current date and time in UTC.
minute_offset, precision)
YEAR()
YEAR(datevalue)
int
SMALLDATETIMEFROMPARTS()
SMALLDATETIMEFROMPARTS(year,
month,
day, hour,
SYSDATETIMEOFFSET()
datetimeoffset
Current date
and time.
Includessmalldatetime
time zone offset
minute)
SELECT DATEADD(day,1,'20120212');
SELECT EOMONTH('20120212');
TIMEFROMPARTS()
time
SELECT CURRENT_TIMESTAMP();
Syntax
Remarks
DATENAME(year,'20120212');
SELECT SYSUTCDATETIME();
SELECT DAY('20120212');
DATEDIFF()
DATEDIFF(datepart, start_date, end_date)
Returns the difference in dateparts
Function
SELECT
ISO_style
--------20120212
Function Category
Description
Scalar
Grouped Aggregate
Window
Rowset
Scalar Function
Categories
SELECT SalesOrderID, YEAR(OrderDate) AS
Configuration
OrderYear
Conversion
FROM Sales.SalesOrderHeader;
Cursor
ProductID
--------749
750
751
752
753
Name
---------------Road-150 Red, 62
Road-150 Red, 44
Road-150 Red, 48
Road-150 Red, 52
Road-150 Red, 56
ListPrice RankByPrice
--------- ----------3578.27
1
3578.27
1
3578.27
1
3578.27
1
3578.27
1
isnmumeric_result
----------------0
SELECT ISNUMERIC(101.99') AS isnmumeric_result;
isnmumeric_result
----------------1
IIF Element
Comments
Boolean_expression
True_value
False_value
CHOOSE Element
Comments
Index
Value_list
2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or trademarks in
the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because
Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information
provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.