Monday, March 6, 2017

Commonly Used SQL Commands for Dates

Here are some of the more common SQL commands I've used while working on Microsoft SQL Server to convert dates or display them differently.

select
convert(char(20),dateadd(d,-(day(getdate())-1),getdate()),101) as FirstDayOfMonth,
convert(char(20),dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())),110) as LastDayOfMonth,
dateadd(d,-(day(getdate())-1),getdate()) as FirstNoConvert,
dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())) as LastNoConvert

select
getdate() as 'Source to DateName',
datename(d,getdate()) as 'Day',
datename(m,getdate()) as 'Month',
datename(dw,getdate()) as 'WeekDay',
datename(wk,getdate()) as 'Week',
datename(dy,getdate()) as 'Day of Year',
datename(qq,getdate()) as 'Quarter',
datename(yy,getdate()) as 'Year',
datename(hh,getdate()) as 'Hour',
datename(mi,getdate()) as 'Minute',
datename(ss,getdate()) as 'Second',
datename(ms,getdate()) as 'MilliSecond'

select
getdate() as 'Source to Convert', --2017-03-06 10:14:50.430
convert(char(50), getdate(),100) as '100', -- Mar  6 2017 10:14AM                            
convert(char(50), getdate(),101) as '101', -- 03/06/2017                                      
convert(char(50), getdate(),102) as '102', -- 2017.03.06                                      
convert(char(50), getdate(),103) as '103', -- 06/03/2017                                      
convert(char(50), getdate(),104) as '104', -- 06.03.2017                                      
convert(char(50), getdate(),105) as '105', -- 06-03-2017                                      
convert(char(50), getdate(),106) as '106', -- 06 Mar 2017                                    
convert(char(50), getdate(),107) as '107', -- Mar 06, 2017                                    
convert(char(50), getdate(),108) as '108', -- 10:14:50                                        
convert(char(50), getdate(),109) as '109', -- Mar  6 2017 10:14:50:430AM                      
convert(char(50), getdate(),110) as '110', -- 03-06-2017                                      
convert(char(50), getdate(),111) as '111', -- 2017/03/06                                      
convert(char(50), getdate(),112) as '112', -- 20170306                                        
convert(char(50), getdate(),113) as '113', -- 06 Mar 2017 10:14:50:430                        
convert(char(50), getdate(),114) as '114'  -- 10:14:50:430


--Date Functions
--

declare @fdate datetime, @workdate datetime

set @fdate = getdate()
set @workdate = getdate()+20


select
datepart(wk,(dateadd(d,day(@fdate)*-1+1,@fdate))) as 'FirstDayofFirstWeekofMonth',
(dateadd(d,day(@fdate)*-1+1,@fdate)) as 'FirstDayofMonth',
cast(convert(char(10),getdate()-day(getdate()-1),101)as datetime) as 'FirstDayOfMonth2',
convert(char(10),dateadd(m,-1,getdate())-day(getdate()-1),101) as 'firstday_previous_month',
convert(char(10),getdate()-day(getdate()),101) as 'lastday_previous_month',
day(@workdate) as 'DayofMonth',
datepart(dw,@workdate) as 'DayofWeek',
datepart(wk,@workdate) as 'WeekofYear',
('Week ' + cast((datepart(wk,@workdate)-(datepart(wk,@fdate)-1))as varchar(2))) as 'WeekOffset'


--Next day at a certain time
select cast(convert(char(10),getdate()+1,101) + ' 20:00' as datetime) as dadate

No comments: