SQL Server-获取日历月的开始和结束

时间:2020-01-29 15:44:02

标签: sql sql-server

我尝试搜索但找不到任何东西。

我正在尝试获取 calander 月的第一个和最后一个日期。

例如,2020年1月的日历月实际上是从2019年12月30日开始,到2020年2月2日结束。(第1-5周)

|---------------------|-------------------|-------------------|
|      Week number    |     From Date     |     To Date       |
|---------------------|-------------------|-------------------|
|       Week 01       | December 30, 2019 | January 5, 2020   |
|---------------------|-------------------|-------------------|
|       Week 05       | January 27, 2020  | February 2, 2020  |
|---------------------|-------------------|-------------------|

Using this website to get week numbers

这可能吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您使用的是MSSQL-2012或更高版本。

DECLARE @DATE DATETIME='29-JAN-2020'

SELECT  DATEADD(DAY, 2 - CASE WHEN DATEPART(WEEKDAY, @DATE-DAY(@DATE)+1)=1 THEN 8 ELSE DATEPART(WEEKDAY, @DATE-DAY(@DATE)+1) END, CAST( @DATE-DAY(@DATE)+1 AS DATE)) [MONTH_START_DATE], 
DATEADD(DAY, 8 - CASE WHEN DATEPART(WEEKDAY, EOMONTH(@DATE))=1 THEN 8 ELSE DATEPART(WEEKDAY, EOMONTH(@DATE)) END , CAST(EOMONTH(@DATE) AS DATE)) [MONTH_END_DATE];

您可以尝试以下链接:-

https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=9747ea25d0d0bc343be8dbcc90803303

答案 1 :(得分:0)

您可以使用以下逻辑:

private void OnDrawGizmos()
{        
    var sorted = positions.OrderByDescending((x) => Vector3.Distance(Camera.current.transform.position, x));

    foreach (Vector3Int position in sorted)
    {
        Gizmos.DrawCube(position * Const.tileSize, Const.tileVectorSize);
    }
}

当然,您可以使用任意日期代替select convert(date, dateadd(day, 1 - day(getdate()), getdate())) as month_first, dateadd(day, 1, eomonth(getdate(), -1)) as alternative_month_first, eomonth(getdate()) as month_last