t sql rediscovered with sql server 2012
TRANSCRIPT
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
1/39
GO BIG!
T-SQLRediscovered with
SQL Server 2012
Jacob Sebastian, SQL Server [email protected]
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
2/39
Agenda
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
3/39
What is todays date?
GETDATE()
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
4/39
What is Tomorrows Date?
GETDATE()+ 1
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
5/39
Beginning of the Month?
SELECT CAST (CAST(YEAR(GETDATE())ASVARCHAR) + '-'
+ CAST(MONTH(GETDATE())ASVARCHAR) + '-'+ '01'ASDATE
)
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
6/39
Beginning of the Month?
SELECT CAST (CAST(YEAR(GETDATE())ASVARCHAR) + '-'
+ CAST(MONTH(GETDATE())ASVARCHAR) + '-'+ '01'ASDATE
)
SELECT CAST (CONCAT(
YEAR(GETDATE()),'-',MONTH(GETDATE()),'-','01')ASDATE
)
SQLServer2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
7/39
CONCAT() FunctionSELECT
FirstName + ' ' +MiddleName + ' ' +LastNameAS CustomerName
FROMCustomers
SELECTISNULL(FirstName,'') + ' ' +ISNULL(MiddleName,'') + ' ' +ISNULL(LastName,'')AS CustomerName
FROMCustomers
SELECTCONCAT(FirstName, ' ', MiddleName, ' ', LastName)AS CustomerName
FROMCustomers
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
8/39
Beginning of the Month?
SELECT CAST (CONCAT(YEAR(GETDATE()),'-',MONTH(GETDATE()),'-','01'
)ASDATE)
SELECTDATEFROMPARTS(YEAR(GETDATE()),MONTH(GETDATE()),1)
SQLServer2012
SQLServer2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
9/39
End of the Month?SELECT DATEFROMPARTS(
YEAR(GETDATE()),MONTH(GETDATE()) + 1,1
)SELECT DATEADD(
D,-1,
DATEFROMPARTS(YEAR(GETDATE()),MONTH(GETDATE()) + 1, 1)
)
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
10/39
End of the Month?SELECT DATEADD(
D, -1,DATEFROMPARTS(CASE WHENMONTH(GETDATE()) < 12
THEN YEAR(GETDATE())ELSE YEAR(GETDATE()) + 1
END,CASE WHENMONTH(GETDATE()) = 12 THEN 1ELSEMONTH(GETDATE()) + 1
END, 1))
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
11/39
End of the Month?SELECT DATEADD(
D, -1,DATEFROMPARTS(YEAR(GETDATE()) + IIF(MONTH(GETDATE()) < 12, 0, 1),IIF(MONTH(GETDATE()) = 12, 1,MONTH(GETDATE()) + 1),
1)
)
SQL Server2012QL Server2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
12/39
IIF() Function
SELECTCustName,CASE IsActiveWHEN 1 THEN'Yes'
ELSE'No'ENDAS IsActiveFROMCustomers
SELECT
CustName,IIF(IsActive = 1, 'Yes', 'No') AS IsActive
FROMCustomers
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
13/39
End of the Month?SELECT DATEADD(
D, -1,DATEFROMPARTS(YEAR(GETDATE()) + IIF(MONTH(GETDATE()) < 12, 0, 1),IIF(MONTH(GETDATE()) = 12, 1,MONTH(GETDATE()) + 1),
1)
)
SELECTEOMONTH(GETDATE())
SQL Server2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
14/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
15/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
16/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13PRINTCONVERT(VARCHAR, GETDATE(), 103) -- 13/03/2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
17/39
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
18/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13PRINTCONVERT(VARCHAR, GETDATE(), 103) -- 13/03/2012PRINTCONVERT(VARCHAR, GETDATE(), 104) -- 13.03.2012PRINTCONVERT(VARCHAR, GETDATE(), 105) -- 13-03-2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
19/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13PRINTCONVERT(VARCHAR, GETDATE(), 103) -- 13/03/2012PRINTCONVERT(VARCHAR, GETDATE(), 104) -- 13.03.2012
PRINTCONVERT(VARCHAR, GETDATE(), 105) -- 13-03-2012PRINTCONVERT(VARCHAR, GETDATE(), 106) -- 13 Mar 2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
20/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13PRINTCONVERT(VARCHAR, GETDATE(), 103) -- 13/03/2012PRINTCONVERT(VARCHAR, GETDATE(), 104) -- 13.03.2012PRINTCONVERT(VARCHAR, GETDATE(), 105) -- 13-03-2012PRINTCONVERT(VARCHAR, GETDATE(), 106) -- 13 Mar 2012PRINTCONVERT(VARCHAR, GETDATE(), 107) -- Mar 13, 2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
21/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13PRINTCONVERT(VARCHAR, GETDATE(), 103) -- 13/03/2012PRINTCONVERT(VARCHAR, GETDATE(), 104) -- 13.03.2012PRINTCONVERT(VARCHAR, GETDATE(), 105) -- 13-03-2012
PRINTCONVERT(VARCHAR, GETDATE(), 106) -- 13 Mar 2012PRINTCONVERT(VARCHAR, GETDATE(), 107) -- Mar 13, 2012PRINTCONVERT(VARCHAR, GETDATE(), 108) -- 20:33:13
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
22/39
Format Date: 2011-01-01 12:30
PRINTCONVERT(VARCHAR, GETDATE(), 101) -- 03/13/2012PRINTCONVERT(VARCHAR, GETDATE(), 102) -- 2012.03.13PRINTCONVERT(VARCHAR, GETDATE(), 103) -- 13/03/2012PRINTCONVERT(VARCHAR, GETDATE(), 104) -- 13.03.2012PRINTCONVERT(VARCHAR, GETDATE(), 105) -- 13-03-2012
PRINTCONVERT(VARCHAR, GETDATE(), 106) -- 13 Mar 2012PRINTCONVERT(VARCHAR, GETDATE(), 107) -- Mar 13, 2012PRINTCONVERT(VARCHAR, GETDATE(), 108) -- 20:33:13
PRINTREPLACE(CONVERT(VARCHAR, GETDATE(), 102), '.', '-')+ ' ' + LEFT(CONVERT(VARCHAR, GETDATE(), 108), 5)
PRINTFORMAT(GETDATE(), 'yyyy-MM-dd hh:mm')
SQL
Server2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
23/39
FORMAT() Function
PRINTFORMAT(GETDATE(),'"-- Demonstrated On" yyyy-MM-dd "at" hh:mm')
-- Demonstrated on 2012-03-13 at 09:03
PRINTFORMAT(GETDATE(), 'yyyy-MM-ddThh:mm:ssZ')
2012-03-13T09:03:03Z
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
24/39
Error Handling
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
25/39
Pagination
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
26/39
Previous, Next, First, Last
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
27/39
PARSE()
DECLARE @dt DATE = '03/05/2012'SELECT @dt-- March 5, 2012-- May 3, 2012
DECLARE @dt DATE = PARSE('03/05/2012' AS DATE USING 'en-US')
-- March 5, 2012DECLARE @dt DATE = PARSE('03/05/2012' AS DATE USING 'en-US')
-- May 3, 2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
28/39
TRY_PARSE()
DECLARE @str CHAR(10) = '15/03/2012' - Loaded from a file
DECLARE @dt DATE = PARSE(@strAS DATE USING 'en-US')
DECLARE @str CHAR(10) = '15/03/2012'- Loaded from a file
SELECT TRY_PARSE(@strAS DATE USING 'en-US')-- NULLSELECT TRY_PARSE(@strAS DATE USING 'en-GB')-- March 15, 2012
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
29/39
TRY_CONVERT()
DECLARE @xVARCHAR(100) = ''SELECTCAST(@x as xml).value('(/Students/@name)[1]', 'VARCHAR(100)')
DECLARE @xVARCHAR(100) = ''
SELECTTRY_CONVERT(xml, @x).value('(/Students/@name)[1]', 'VARCHAR(100)')
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
30/39
Accessing Previous and Next
Rows
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
31/39
Accessing Previous and Next
RowsID Time Type1 2011-01-01 10:00:00 IN1 2011-01-01 18:00:00 OUT1 2011-01-02 10:00:00 IN2 2011-01-01 10:05:00 IN2 2011-01-01 19:00:00 OUT3 2011-01-01 11:00:00 IN3 2011-01-01 17:00:00 OUT
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
32/39
Accessing Previous and Next
RowsID Time Type1 2011-01-01 10:00:00 IN1 2011-01-01 18:00:00 OUT1 2011-01-02 10:00:00 IN2 2011-01-01 10:05:00 IN2 2011-01-01 19:00:00 OUT3 2011-01-01 11:00:00 IN3 2011-01-01 17:00:00 OUT
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
33/39
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
34/39
Accessing Previous and Next
RowsRow ID Time Type
1 1 2011-01-01 10:00:00 IN
2 1 2011-01-01 18:00:00 OUT3 1 2011-01-02 10:00:00 IN
1 2 2011-01-01 10:05:00 IN
2 2 2011-01-01 19:00:00 OUT
1 3 2011-01-01 11:00:00 IN
2 3 2011-01-01 17:00:00 OUT
Row ID Time Type
1 1 2011-01-01 10:00:00 IN
2 1 2011-01-01 18:00:00 OUT3 1 2011-01-02 10:00:00 IN
1 2 2011-01-01 10:05:00 IN
2 2 2011-01-01 19:00:00 OUT
1 3 2011-01-01 11:00:00 IN
2 3 2011-01-01 17:00:00 OUT
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
35/39
Accessing Previous and Next
Rows
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
36/39
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
37/39
Thank You
-
7/28/2019 T SQL Rediscovered With SQL Server 2012
38/39
Resources
Developers Infrastructure Professionals
http://msdn.microsoft.com/ http://technet.micorsoft.com/
msdnindia @msdnindia technetindia @technetindia
http://msdn.microsoft.com/http://technet.mic/http://technet.microsoft.com/http://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://facebook.com/msdnindiahttp://technet.microsoft.com/http://technet.microsoft.com/http://technet.mic/http://msdn.microsoft.com/ -
7/28/2019 T SQL Rediscovered With SQL Server 2012
39/39
2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or
may be registered trademarks and/or trademarks in the US 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.