如何根据日期时间值计算该月的最后一天

时间:2011-10-06 11:33:33

标签: sql sql-server

  

可能重复:
  How do I calculate the last day of the month in SQL?

SQL新手,但您如何从datetime(trans_date)确定月份值的最后一天。

对不起只是一个愚蠢的问题,但我可以从trans表中指定trans_date(date)而不是使用当前日期

2 个答案:

答案 0 :(得分:5)

轻松,找到下个月的第一天并减去1天。

例如

DECLARE @dt AS DATETIME = GetDate();
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dt)+1,0))

编辑:如果您从表中选择,请执行以下操作:

SELECT 
  SomeColumn,
  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,SomeColumn)+1,0)) AS EndOfMonth
FROM SomeTable

答案 1 :(得分:0)

Pinal Dave在这里有一个很好的解释:
http://blog.sqlauthority.com/2007/08/18/sql-server-find-last-day-of-any-month-current-previous-next/

请记住,如果您使用的是SQL2008,则可以CAST( field AS DATE)删除生成的时间数据。