【问题标题】:Date issues SQL first day of month crossover日期问题 SQL 每月第一天交叉
【发布时间】:2015-08-14 07:42:02
【问题描述】:

这是我第 27 年的问题周显示 2 个日期,因为该月的交叉发生它会生成另一个月的第一天日期, 我只想在每个发生这种情况的情况下向第一次约会展示

日期时间----------------|WeekofYear ------|FirstDayOfMonth 2015-06-29 00:00:00.000 |27 --------------|2015-06-01 00:00:00.000 2015-07-01 00:00:00.000 |27 --------------|2015-07-01 00:00:00.000
CREATE TABLE #weekonweek
(
[Datetime] datetime,
[WeekofYear] int,
[FirstDayOfMonth] datetime
)

INSERT INTO #weekonweek

SELECT 
min(c.Datetime),
c.WeekOfYear
,c.FirstDayOfMonth

FROM Calendar c
WHERE YEAR = 2015
and WeekOfYear = 27
GROUP BY WeekOfYear ,c.FirstDayOfMonth
SELECT * FROM #weekonweek


CREATE TABLE #subtable
(
[Datetime] datetime,
[WeekofYear] int,
[FirstDayOfMonth] datetime,
)

INSERT INTO #subtable

SELECT 
c.Datetime,
w.WeekOfYear,
min(w.FirstdayofMonth)
FROM Calendar c
LEFT JOIN #weekonweek w on c.WeekOfYear  = w.WeekofYear
WHERE YEAR = 2015
and c.WeekOfYear = 27
and w.FirstDayOfMonth <w.FirstDayOfMonth
group by c.Datetime,
w.WeekOfYear
SELECT * FROM #subtable
DROP TABLE #subtable
DROP TABLE #weekonweek

【问题讨论】:

  • 请添加日历表结构..
  • @AbhayChauhan im 700 个字符的结构太多了
  • 为清楚起见,提供所需的输出。
  • 日期时间日期ShortDate FullDate DAYOFMONTH DaySuffix DAYNAME DAYOFWEEK DayOfWeekInMonth DayOfWeekInYear DayOfQuarter DAYOFYEAR WEEKOFYEAR月MONTHNAME MonthOfQuarter季QuarterName年份YEARWEEK MonthYear时期Firstdayofweek可LastDayOfWeek FirstDayOfLastWeek LastDayOfLastWeek FirstDayOfMonth LastDayOfMonth FirstDayOfLastMonth LastDayOfLastMonth FirstDayOfQuarter LastDayOfQuarter FirstDayOfYear LastDayOfYear IsWeekday IsEnglishHoliday EnglishHoliday WeeklyPeriod 跨度>
  • 日期时间----------------|WeekofYear ------|FirstDayOfMonth 2015-06-29 00:00:00.000 |27 --- -----------|2015-06-01 00:00:00.000

标签: sql-server datetime


【解决方案1】:

所以如果你想实现这个输出:

Datetime----------------|WeekofYear------|FirstDayOfMonth 
2015-06-29 00:00:00.000 |27--------------|2015-06-01 00:00:00.000

您只需使用TOP 1 并添加ORDER BY 子句。

SELECT TOP 1 * -- like this
FROM #subtable
ORDER BY DateTime -- here you need to pass ORDER BY

【讨论】:

    【解决方案2】:
    SELECT DR.DivNo
        ,p.[ProductCode]
        ,p.ProductClass
        ,p.EmpNo
        ,[Description]
        ,[CGNo]
        ,[SCGNo]
        ,dr.Retail
        ,bd.[Buying Director]
    INTO #Product
    FROM [PRODUCT] p
    LEFT JOIN [DIVRETAIL] DR ON p.ProductCode = DR.ProductCode
    WHERE dr.ValidTo IS NULL
        AND dr.DivNo NOT LIKE '8__'
    GROUP BY DR.DivNo
        ,p.[ProductCode]
        ,p.ProductClass
        ,p.EmpNo
        ,bd.[Buying Director]
        ,[Description]
        ,[CGNo]
        ,[SCGNo]
        ,dr.Retail
    
    
    
    SELECT TOP 1000 [Datetime]
            ,[FirstDayOfWeek]
            ,[FirstDayOfMonth]
            ,s.NoOfStores
            ,s.DivNo
        INTO #stores
        FROM [Calendar] c
        LEFT JOIN Stores s ON c.FirstDayOfMonth = s.Validfrom
        WHERE DATETIME = firstdayofweek
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2013-09-22
      • 2021-05-25
      • 2023-01-26
      • 2020-10-02
      • 1970-01-01
      相关资源
      最近更新 更多