Here we have a couple of code examples that work with dates. The first one gets today’s date and converts it to a different format. It also does a little addition to get tomorrow’s date and displays it. The second code example works with Julian dates.
USE myDatabase GO /* Using dates - Example functions Here we get today's date and time from the system. We can extract the year, month and day, reformat and display. SQL Server Functions Used: getdate(), cast(), datepart() substring() and dateadd() */ DECLARE @datetoday as smalldatetime DECLARE @datetomorrow as smalldatetime DECLARE @YearString as varchar(4) /* i.e. 2017 */ DECLARE @MonthString as varchar(2) DECLARE @DayString as varchar(2) SET @datetoday = getdate() SET @YearString = cast(DATEPART(yyyy, @datetoday) as varchar(4)); SET @MonthString = cast(DATEPART(mm, @datetoday) as varchar(2)); SET @DayString = cast(DATEPART(dd, @datetoday) as varchar(2)); DECLARE @yy_mm_dd as varchar(8) SET @yy_mm_dd = SUBSTRING(@YearString,3,2) + '-' + @MonthString + '-' + @DayString PRINT 'Today''s date in this format (yy-m-d) is: ' + @yy_mm_dd -- go back to the date-type variable to add one day, do not simply -- add one day to the day string. That will eventually bite you. SET @datetomorrow = DATEADD(DAY,1,@datetoday) -- SET @datetoday = @datetomorrow -1 SET @YearString = cast(DATEPART(yyyy, @datetomorrow) as varchar(4)); SET @MonthString = cast(DATEPART(mm, @datetomorrow) as varchar(2)); SET @DayString = cast(DATEPART(dd, @datetomorrow) as varchar(2)); SET @yy_mm_dd = SUBSTRING(@YearString,3,2) + '-' + @MonthString + '-' + @DayString PRINT 'Tomorrow''s date in this format (yy-m-d) is: ' + @yy_mm_dd
Here is a T-SQL ufunction that converts a date format from Julian format to ddmmyy format. Both dates are strings.
USE [myDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Mike -- Create date: Feb. 7, 2017 (2017038) -- Description: Converts date format -- ============================================= CREATE FUNCTION [dbo].[JulianToDDMMYY01] (@JulianIncomingDate varchar(7)) RETURNS varchar(6) AS BEGIN DECLARE @ddmmyyChar6 as varchar(6) -- Declare the return variable DECLARE @DatePaymentDate as date DECLARE @YearString as varchar(4) /* i.e. 2017 */ DECLARE @MonthString as varchar(2) DECLARE @DayString as varchar(2) -- We need to convert incoming @JulianIncomingDate in Julian format to char(6) DDMMYY -- convert to date type, use DATEPART() function to extract /* Convert Julian varchar string to a date-type variable */ SET @DatePaymentDate = DATEADD(YEAR, (@JulianIncomingDate / 1000) - 1900, @JulianIncomingDate % 1000 - 1) /* Convert date-type @DatePaymentDate into 3 varchar strings, then concatenate */ SET @YearString = cast(DATEPART(yyyy, @DatePaymentDate) as varchar(4)); SET @MonthString = cast(DATEPART(mm, @DatePaymentDate) as varchar(2)); SET @DayString = cast(DATEPART(dd, @DatePaymentDate) as varchar(2)); SET @ddmmyyChar6 = right('00' + @DayString,2) + right('00' + @MonthString,2) + right(@YearString,2); RETURN @ddmmyyChar6 END; GO