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)
1.乙個月第一天的
select dateadd(mm, datediff(mm,0,getdate()), 0)
2.本週的星期一
select dateadd(wk, datediff(wk,0,getdate()), 0)
3.一年的第一天
select dateadd(yy, datediff(yy,0,getdate()), 0)
4.季度的第一天
select dateadd(qq, datediff(qq,0,getdate()), 0)
5.當天的半夜
select dateadd(dd, datediff(dd,0,getdate()), 0)
6.上個月的最後一天
select dateadd(ms,-3,dateadd(mm, datediff(mm,0,getdate()), 0))
7.去年的最後一天
select dateadd(ms,-3,dateadd(yy, datediff(yy,0,getdate()), 0))
8.本月的最後一天
select dateadd(ms,-3,dateadd(mm, datediff(m,0,getdate())+1, 0))
9.本年的最後一天
select dateadd(ms,-3,dateadd(yy, datediff(yy,0,getdate())+1, 0))
10.本月的第乙個星期一
select dateadd(wk, datediff(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
返回當前日期和時間
通過函式getdate(),你可以獲得當前的日期和時間。函式getdate()可以用來作為datedime型字段的預設值。這對插入記錄時儲存當時的時間是有用的。要建立乙個表,其中的記錄包含有當前的日期和時間,可以新增乙個datetime型字段,指定其預設值為函式getdate()的返回值,就象這樣:
create table site_log (
username varchar(40),
useractivity varchar(100),
entrydate datetime default getdate())
轉換日期和時間
函式getdate()的返回值在顯示時只顯示到秒。實際上,sql sever內部時間可以精確到毫秒級(確切地說,可以精確到3.33毫秒)。
要得到不同格式的日期和時間,你需要使用函式convert()。例如,當下面的這個語句執行時,顯示的時間將包括毫秒:
select convert(varchar(30),getdate(),9)
Date相關日期格式轉換
var mydate new date mydate.getyear 獲取當前年份 2位 mydate.getfullyear 獲取完整的年份 4位,1970 mydate.getmonth 獲取當前月份 0 11,0代表1月 所以獲取當前月份是mydate.getmonth 1 mydate.ge...
日期處理與進製轉換
這篇文章將介紹常見的日期處理與進製轉換問題。以題目為例 題目描述 有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。輸入有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 輸出每組資料輸出一行,即日期差值 樣例輸入20130101 20130105...
日期時間處理相關工具類
kpdatetool.h kpdatetool created by 劉鯤鵬 on 2018 2 28.日期時間處理相關工具類 import inte ce kpdatetool nsobject 獲取當前時間的時間戳 nstimeinterval nstimeinterval currenttim...