SQL如何获得本季度第一天,一年的第一天,本月的最后一天

SQL如何获得本季度第一天,一年的第一天,本月的最后一天,第1张

你好,以下是获取年,季度,天日期的所有方式:

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)

/// <summary>

/// 指定日期的该月第一天(yyyy-MM-dd 00:00:00)

/// </summary>

/// <param name="sThisDate">指定的日期(yyyy-MM-dd HH:mm:ss)</param>

/// <returns>该月第一天</returns>

public static string MonthFirstDate(string sThisDate)

{

int nYear = Year(sThisDate);//获取年份

int nMonth = Month(sThisDate);//获取月份

int nDay = 1;

return EncodeDate(nYear, nMonth, nDay) + " 00:00:00";

}

/// <summary>

/// 通过年、月、日得到日期部分

/// </summary>

/// <param name="nYear">年份</param>

/// <param name="nMonth">月份</param>

/// <param name="nDay">日</param>

/// <returns>日期部分</returns>

public static string EncodeDate(int nYear, int nMonth, int nDay)

{

string sResult = nYearToString("0000") + "-" + nMonthToString("00")

+ "-" + nDayToString("00");

return sResult;

}

//======================最后一天 我们可以换总思考方式,如下=======================

/// <summary>

/// 指定日期的该月最后一天(yyyy-MM-dd HH:mm:ss)

/// </summary>

/// <param name="sThisDate">指定的日期(yyyy-MM-dd HH:mm:ss)

</param>

/// <returns>该月最后一天</returns>

public static string MonthLastDate(string sThisDate)

{

int nYear = Year(sThisDate);//获取年份

int nMonth = Month(sThisDate);//获取月份

nMonth++;

if (nMonth == 13)

{

nYear++;

nMonth = 1;

}

DateTime dt = new DateTime(nYear, nMonth, 1);

dt = dtAddDays(-1); //一个月的最后一天,就是下一个月的第一天减一

return dtToString("yyyy-MM-dd HH:mm:ss");

}

//================ 不懂的可以Hi 我! ==============

publicStringgetLastMonthDay(){Calendarcal=CalendargetInstance();Datedate=newDate();calsetTime(date);intyear=0;intmonth=calget(CalendarMONTH);//上个月月份//intday1=calgetActualMinimum(CalendarDAY_OF_MONTH);//起始天数intday=calgetActualMaximum(CalendarDAY_OF_MONTH);//结束天数Systemoutprintln("###lastmonth:"+month);if(month==0){year=calget(CalendarYEAR)-1;month=12;}else{year=calget(CalendarYEAR);}StringendDay=year+"-"+month+"-"+day;returnendDay+"23:59:59"}

你可以先得到下个月的一号的日期,然后减一天,比如要得到本月的最后一天,可以这样写:

DateTime d = new DateTime(DateTimeNowYear, DateTimeNowMonth, 1);

d = dAddMonths(1)AddDays(-1);

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

//获取前月的第一天

Calendar cal_1=CalendargetInstance();//获取当前日期

cal_1add(CalendarMONTH, -1);

cal_1set(CalendarDAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

firstDay = formatformat(cal_1getTime());

Systemoutprintln("-----1------firstDay:"+firstDay);

//获取前月的最后一天

Calendar cale = CalendargetInstance();

caleset(CalendarDAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天

lastDay = formatformat(calegetTime());

Systemoutprintln("-----2------lastDay:"+lastDay);

//获取当前月第一天:

Calendar c = CalendargetInstance();

cadd(CalendarMONTH, 0);

cset(CalendarDAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

String first = formatformat(cgetTime());

Systemoutprintln("===============first:"+first);

//获取当前月最后一天

Calendar ca = CalendargetInstance();

caset(CalendarDAY_OF_MONTH, cagetActualMaximum(CalendarDAY_OF_MONTH));

String last = formatformat(cagetTime());

Systemoutprintln("===============last:"+last);

代码如上,原理是,设定指定月份的下个月第一天,减去1毫秒,就是上个月最后一天。

测试输出结果,以下结果分别是29、28:

js如何获得今年最后一天的日期:

<script type="text/javascript">

function getYearLastDay(){

return new Date()getFullYear()+"年12月31号";

}

alert(getYearLastDay());

</script>

使用time()函数先返回当前的时间戳秒数,然后+上本月剩余的x天246060

echo date("Y年-m月-d日-N,H点:i分:s秒",time()+(x246060));

今天日期 = Date

今天日期分割 = Split(今天日期, "/")

明天日期 = DateSerial(今天日期分割(0), 今天日期分割(1), 今天日期分割(2) + 1)

明天日期分割 = Split(明天日期, "/")

If CLng(今天日期分割(2)) > CLng(明天日期分割(2)) Then

//推荐163邮箱,可正常收发邮件

发送邮件 = Lib网络发送邮件("你的邮箱帐号", "你的邮箱密码", "发送邮件地址", "邮件主题", "邮件内容", "")

End If

以上就是关于SQL如何获得本季度第一天,一年的第一天,本月的最后一天全部的内容,包括:SQL如何获得本季度第一天,一年的第一天,本月的最后一天、asp.net后台获得本月第一天和最后一天、java中如何获取当前月最后一天等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9454718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存