t sql rediscovered with sql server 2012

Upload: balachandraks

Post on 03-Apr-2018

236 views

Category:

Documents


0 download

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.