我需要以下列格式找到一个月的最后一天:
"2013-05-31 00:00:00:000"
任何人请帮忙。
答案 0 :(得分:65)
试试这个 -
CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth]
(
@Date DATETIME
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))
END
<强>查询:强>
DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'
SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))
<强>输出:强>
-----------------------
2013-05-31 00:00:00.000
答案 1 :(得分:40)
我知道这个问题适用于SQL Server 2005,但我想我会提到 - 从SQL 2012开始,现在有一个EOMONTH()
函数可以获得该月的最后一天。要以原始提问者指定的格式获取,您必须转换为datetime
。
SELECT CAST(eomonth(GETDATE()) AS datetime)
答案 2 :(得分:12)
SQL Server 2012引入了the eomonth
function:
select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
答案 3 :(得分:8)
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
答案 4 :(得分:3)
dateadd(month,1+datediff(month,0,getdate()),-1)
检查运行:
print dateadd(month,1+datediff(month,0,@date),-1)
答案 5 :(得分:0)
计算月份的最后日期是非常简单的计算 -
输出 - 1374,如果getdate()输出为“2014-07-23 19:33:46.850”
输出 - 1375,如果getdate()输出为“2014-07-23 19:33:46.850”
输出 - '2014-08-01 00:00:00.000',如果getdate()输出为“2014-07-23 19:33:46.850”
输出 - '2014-07-31 00:00:00.000',如果getdate()输出为“2014-07-23 19:33:46.850”
以同样的方式计算,我们可以实现 - 1.下个月的最后日期 2.上个月的最后一个日期 等等...
我希望这篇文章有所帮助。
答案 6 :(得分:0)
选择DATEADD(DAY, - (DAY(DATEADD(MONTH,1,GETDATE()))),DATEADD(MONTH,1,GETDATE()))
这在T-sql中很有用..
使用列名替换查询的GETDATE()。
答案 7 :(得分:0)
Declare @GivenDate datetime
Declare @ResultDate datetime
DEclare @EOMDate datetime
Declare @Day int
set @GivenDate=getdate()
set @GivenDate= (dateadd(mm,1,@GivenDate))
set @Day =day(@GivenDate)
set @ResultDate=dateadd(dd,-@Day+1,@GivenDate)
select @EOMDate =dateadd(dd,-1 ,@ResultDate)
select @EOMDate
答案 8 :(得分:0)
declare @date date=getdate()
declare @st_date date,@end_dt date
set @st_date=convert(varchar(5),year(@date))+'-'+convert(varchar(5),month(@date))+'-01'
set @end_dt=DATEADD(day,-1, DATEADD(month,1,@st_date))
---------**************--------------
select @st_date as [START DATE],@end_dt AS [END DATE]
答案 9 :(得分:0)
只是另外一种版本,即添加一个月并减去一天来创建报告:
例如:StartofMonth是'2019-10-01'
dateadd(day,-1,dateadd(month,1,StartofMonth))
EndOfMonth将变为'2019-10-31'
答案 10 :(得分:0)
我的出色方法。问候
DECLARE @MAXDATE INT=(SELECT MAX(DATEPART(YEAR,ORDERDATE)) FROM Orders)
DECLARE @MINDATE INT=(SELECT MIN(DATEPART(YEAR,ORDERDATE)) FROM Orders)
DECLARE @HORA INT=(SELECT MIN( DATEPART(HOUR,ORDERDATE)) FROM ORDERS)
DECLARE @DIA INT = 28
SELECT Employees.EmployeeID , Orders. OrderID , OrderDate FROM Employees
INNER JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID
Where (DATEPART(YEAR,ORDERDATE)) >=@mindate and (DATEPART(YEAR,ORDERDATE))<= @maxdate
and DATEPART(HOUR,ORDERDATE)=@HORA and DATEPART(DAY,ORDERDATE) IN (30,31) OR DATEADD(DAY,0,DATEPART(DAY,ORDERDATE))=28 AND
DATEADD(MONTH,0,DATEPART(MONTH,ORDERDATE))=2
ORDER BY 1 ASC
答案 11 :(得分:0)
在Snowflake(可能还有其他SQL引擎)中,您可以使用LAST_DAY
。
select to_date('2015-05-08T23:39:20.123-07:00') as "DATE",
last_day("DATE", 'MONTH') as "LAST DAY OF MONTH";
哪个返回:
DATE LAST DAY OF MONTH
2015-05-08 2015-05-31
答案 12 :(得分:0)
请试试
SELECT CONVERT(DATE,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) AS lastDayOfMonth
答案 13 :(得分:-1)
http://php.net/manual/en/function.cal-days-in-month.php
给定日历中所选月份的天数
<?php
$num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "There was $num days in August 2003";
?>
答案 14 :(得分:-1)
TO FIND 1ST and Last day of the Previous, Current and Next Month in Oracle SQL
-----------------------------------------------------------------------------
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1 FDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1)) LDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 FDCM,
LAST_DAY(SYSDATE)LDCM,
LAST_DAY(SYSDATE)+1 FDNM,
LAST_DAY(LAST_DAY(SYSDATE)+1) LDNM
FROM DUAL
答案 15 :(得分:-1)
选择DATEADD(MONTH,DATEDIFF(MONTH,-1,GETDATE())-0,-1)LastDate