SQL如何将batch_date列从每月的第一天更改为每月的最后一天

SQL如何将batch_date列从每月的第一天更改为每月的最后一天,sql,sql-server,date,ssms,Sql,Sql Server,Date,Ssms,我在SQLServerManagementStudio 2008工作。我有一个名为BATCH_DATE的列,其中有以下格式的条目2007-01-01 00:00:00。 我需要将这些更改为2007-01-31 00:00:00格式。请帮忙 Bhatiashish回答了我的问题,我已经为他/她按下了绿色复选标记。此问题已得到回答。您可以在每个问题上增加30天: select dateadd(day, 30, batch_date) 如果这不起作用,那么请澄清你在问题中的意思。类似的东西正是我想要

我在SQLServerManagementStudio 2008工作。我有一个名为BATCH_DATE的列,其中有以下格式的条目
2007-01-01 00:00:00
。 我需要将这些更改为
2007-01-31 00:00:00
格式。请帮忙


Bhatiashish回答了我的问题,我已经为他/她按下了绿色复选标记。此问题已得到回答。

您可以在每个问题上增加30天:

select dateadd(day, 30, batch_date)

如果这不起作用,那么请澄清你在问题中的意思。

类似的东西正是我想要的,除了那些只有30天或29天的月份怎么样?@NEER-这是他在问题标题中说的!微软发明了一个命令来做到这一点——尽管我喜欢休息一天,但我还是喜欢加上一个月,然后休息一天——非常感谢!这在有29天或30天的月份也有效吗?在这种情况下,你回答了我的问题。是的,这将足够公平,但这不给时间为23:59:59吗?不是我们要的
DECLARE @BATCH_DATE as datetime = '2007-01-01 00:00:00';

SET @BATCH_DATE = DATEADD(day,-1,DATEADD(month,1,@BATCH_DATE));

select @BATCH_DATE
Select dateadd(day, -1, dateadd( month, 1, batch_date))
DECLARE @Month Datetime
Set  @month='2007-01-01 00:00:00'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@month)+1,0))