你好,以下是获取年,季度,天日期的所有方式:
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中如何获取当前月最后一天等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)