Answers:
SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth
SELECT EOMONTH(@mydate) AS EndOfMonth
会给您该月的最后一天。
从SQL Server 2012开始:
SELECT DATEADD(DAY,1,EOMONTH(@mydate,-1))
简单查询:
SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)
-- Instead of GetDate you can put any date.
这也适用:
SELECT DATEADD(DAY,(DATEPART(DAY,@mydate)-1)*(-1),@mydate) AS FirstOfMonth
SELECT @myDate - DAY(@myDate) + 1
Operand type clash: date is incompatible with int
。我猜是因为您要-
在日期上使用运算符?
----Last Day of Previous Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
LastDay_PreviousMonth
----Last Day of Current Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
LastDay_CurrentMonth
----Last Day of Next Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
LastDay_NextMonth
这可能是一个新功能,但您也可以使用旧功能:
select DATEFROMPARTS(year(@mydate),month(@mydate),'01')
例如,如果变量中的日期为,'2017-10-29'
则返回的日期为'2017-10-01'
在这里,我们可以使用下面的查询来查询月份的第一个日期和月份的最后一个日期。
SELECT DATEADD(DAY,1,EOMONTH(Getdate(),-1)) as 'FD',Cast(Getdate()-1 as Date)
as 'LD'
SELECT DATEADD (DAY, -1 * (DAY(GETDATE()) - 1), GETDATE())
................................................... ..........
如果您不想要时间,则将其转换为DATE或将时间转换为0:00:00,将其转换为DATE然后返回DATETIME。
SELECT CONVERT (DATETIME,
CONVERT (DATE, DATEADD (DAY, -1 * (DAY(GETDATE()) - 1),
GETDATE())))
将GETDATE()更改为所需的日期
在Sql Server 2012中,
select getdate()-DATEPART(day, getdate())+1
select DATEADD(Month,1,getdate())-DATEPART(day, getdate())
在SQL中作为参数传递的日期中获取第一个日期和最后一个日期
@date DATETIME
SELECT @date = GETDATE()
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@date)-1),@date),105) AS value,
'First Day of Current Month' AS name
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@date))),
DATEADD(mm,1,@date)),105),
'Last Day of Current Month'
GO
**OutPut**
12/01/2019 First Day of Current Month
12/31/2019 Last Day of Current Month
这是您在MySQL中的处理方式:
select DATE_FORMAT(NOW(), '%Y-%m-1')
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')