declare @dt datetime
set @dt=getdate()
declare @number int
set @number=3
--1.指定日期該年的第一天或最後一天
--a. 年的第一天
select convert(char(5),@dt,120)+'1-1'
--b. 年的最後一天
select convert(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最後一天
--a. 季度的第一天
select convert(datetime,
convert(char(8),
dateadd(month,
datepart(quarter,@dt)*3-month(@dt)-2,
@dt),
120)+'1')
--b. 季度的最後一天(case判斷法)
select convert(datetime,
convert(char(8),
dateadd(month,
datepart(quarter,@dt)*3-month(@dt),
@dt),
120)
+case when datepart(quarter,@dt) in(1,4)
then '31'else '30' end)
--c. 季度的最後一天(直接推算法)
select dateadd(day,-1,
convert(char(8),
dateadd(month,
1+datepart(quarter,@dt)*3-month(@dt),
@dt),
120)+'1')
--3.指定日期所在月份的第一天或最後一天
--a. 月的第一天
select convert(datetime,convert(char(8),@dt,120)+'1')
--b. 月的最後一天
select dateadd(day,-1,convert(char(8),dateadd(month,1,@dt),120)+'1')
--c. 月的最後一天(容易使用的錯誤方法)
select dateadd(month,1,dateadd(day,-day(@dt),@dt))
--4.指定日期所在周的任意一天
select dateadd(day,@number-datepart(weekday,@dt),@dt)
--5.指定日期所在周的任意星期幾
--a. 星期天做為一周的第1天
select dateadd(day,@number-(datepart(weekday,@dt)+@@datefirst-1)%7,@dt)
--b. 星期一做為一周的第1天
select dateadd(day,@number-(datepart(weekday,@dt)+@@datefirst-2)%7-1,@dt)
--獲取上週的第一天 和最後一天
declare @dt datetime
declare @firstday datetime
declare @lastday datetime
set @dt=dateadd(day,-7,getdate())
select @dt = dateadd(day,1-(datepart(weekday,@dt)+@@datefirst-2)%7-1,@dt)
set @firstday = cast(convert(char(10),@dt,120) +' 00:00:00' as datetime)
select @lastday = cast(convert(char(10),dateadd(day,6,@dt),120)+' 23:59:59' as datetime)
select @firstday,@lastday
--昨天的時間範圍
select cast(convert(char(10),dateadd(day,-1,getdate()),120) + ' 00:00:00' as datetime)
select cast(convert(char(10),dateadd(day,-1,getdate()),120) + ' 23:59:59' as datetime)
--1.獲取今天的開始時間和最後時間
--2.獲取昨天的開始時間和最後時間
--3.獲取上週的開始時間和最後時間
--4.獲取上月的開始時間和最後時間
declare @dt datetime
declare @firstdate1 datetime,@lastdate1 datetime
declare @firstdate2 datetime,@lastdate2 datetime
declare @firstdate3 datetime,@lastdate3 datetime
declare @firstdate4 datetime,@lastdate4 datetime
set @dt = getdate()
set @firstdate1 = cast(convert(char(10),getdate(),120) + ' 00:00:00' as datetime)
set @lastdate1 = cast(convert(char(10),getdate(),120) + ' 23:59:59' as datetime)
--select @firstdate1,@lastdate1
set @dt = dateadd(day,-1,getdate())
set @firstdate2 = cast(convert(char(10),@dt,120) + ' 00:00:00' as datetime)
set @lastdate2 = cast(convert(char(10),@dt,120) + ' 23:59:59' as datetime)
--select @dt,@firstdate2,@lastdate2
set @dt = dateadd(day,-7,getdate())
set @dt = dateadd(day,-(datepart(weekday,@dt) -2),@dt)
set @firstdate3 = cast(convert(char(10),@dt,120) + ' 00:00:00' as datetime)
set @lastdate3 = cast(convert(char(10),dateadd(day,6,@dt),120) + ' 23:59:59' as datetime)
--select @dt,@firstdate3,@lastdate3
set @dt = getdate()
set @firstdate4 = cast(convert(char(8),@dt,120) +'01 00:00:00' as datetime)
set @lastdate4 = dateadd(month,1,@firstdate4)
--select @dt,@firstdate4,@lastdate4
SQL日期格式操作
sql server中文版的預設的日期欄位datetime格式是yyyy mm dd thh mm ss.mmm 例如 select getdate 2004 09 12 11 06 08.177 整理了一下sql server裡面可能經常會用到的日期格式轉換方法 舉例如下 select conve...
sql中日期操作
1.看到乙個帖子,裡面日期操作函式挺多,方法技巧也挺好,學習了。declare s date select s 2012 01 01 定義開始日期 select cast datepart yy,dateadd dd,number,s as varchar 4 年 cast datepart mm,...
sql日期的操作
現象 1 sql查詢當前時間間隔的語句 2 sql返回兩個日期的間隔時間 天 月 時 3 將sql查出來的日期改變為指定格式的 字串 解決辦法 1 sql查詢當前時間間隔的語句 2 sql返回兩個日期的間隔時間 天 月 時 其中字母表示的意思 datediff 函式返回兩個日期之間的時間。語法dat...