28

我正在尝试获取仅在当前月份的最后一天之前显示 OrderDates 的结果。我猜会是这样的……

SELECT OrderDate
FROM Orders
WHERE OrderDate < (code for first day of the next month?)
4

7 回答 7

66

下个月的第一天:

sql-server 2012+

DATEADD(d, 1, EOMONTH(current_timestamp))

sql-server 2008 及更早版本:

DATEADD(m, DATEDIFF(m, -1, current_timestamp), 0)
于 2014-03-25T08:30:31.920 回答
2

您的问题有些模棱两可,但这会给您“(本月第一天的代码)”

SELECT OrderDate
FROM Orders 
WHERE ORDERDATE < DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
于 2014-03-25T01:46:25.693 回答
2
SELECT DATEADD(month, DATEDIFF(month, 0, getdate())+1, 0) AS StartOfMonth
于 2017-04-05T05:32:27.430 回答
2

让我们了解获取当月第一天的方法,我们可以使用 DATEPART 从日期(例如@mydate)中获取天组件并减去该天组件以获得上个月的最后一天。添加一天以获得当月的第一天。例如@mydate = 10/8/2019,减去天数部分(8 天)将为我们提供 2019 年 9 月 30 日。现在在此结果中添加一天以获得当月的第一天 - 2019 年 10 月 1 日。

公式 - DATEADD(day,1,DATEADD(day, -DATEPART(day,@mydate), @mydate))

现在 下个月的第一天- 在上面的公式中添加一个月 DATEADD(month,1,(DATEADD(day,1,DATEADD(day, -DATEPART(day,@mydate), @mydate))))

于 2020-01-29T07:01:59.070 回答
1

尝试这个

SELECT OrderDate
FROM Orders 
WHERE ORDERDATE < DATEADD(dd,-(DAY(DATEADD(mm,1,getdate()))-1),DATEADD(mm,1,getdate()))

看看这里

于 2014-03-25T03:17:07.607 回答
0
SELECT OrderDate FROM Orders WHERE orderdate < (LAST_DAY(CURRENT DATE) + 1)
于 2018-08-21T14:58:23.727 回答
0
    Select Convert(date,Dateadd(dd,1 - DATEPART(dd,getdate()), DATEADD(mm,1,getdate())),103)
于 2019-08-15T15:59:43.360 回答