--日期的推算:(轉鄒老大的**)
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)
SQL日期推算
declare dt as datetime set dt getdate select cast convert varchar 8 dateadd month,datepart quarter,dt 3 month dt 2 dt 120 01 as datetime result 2008 1...
pta習題 退休日期推算
6 3 退休日期推算 10分 關於日期的結構定義如下 struct dateg 編寫兩個函式,乙個計算自公元1年1月1日到指定的日期共經歷了多少天。另乙個是前乙個函式的逆函式 由自公元1年1月1日歷經指定的天數後的日期 返回年月日構成的日期 dateg days2date int x 100 int...
MySql日期處理系列 常用的日期推算處理
title 常用的日期推算處理 auther 小強 占卜師 date 2007 12 25 取得當前日期 set dt curdate select dt 當前日期這個月的第一天 select concat left dt,8 1 當前日期這個月的最後一天 select date sub conca...