1

これはばかげているように聞こえることはわかっています...わかっています...しかし、月の最初の7日を選択して、このような結果を得たいと思っています。

これは私が持っているものです:

SELECT row_number () OVER (ORDER BY DateD), *
  FROM (SELECT DATENAME (dw, GETDATE ()) AS 'DateName', getdate () AS 'DateD'
        連合
        SELECT DATENAME (dw, GETDATE () + 1) AS 'DateName',
               getdate () + 1 AS 'DateD'
        連合
        SELECT DATENAME (dw, GETDATE () + 2) AS 'DateName',
               getdate () + 2 AS 'DateD'
        連合
        SELECT DATENAME (dw, GETDATE () + 3) AS 'DateName',
               getdate () + 3 AS 'DateD'
        連合
        SELECT DATENAME (dw, GETDATE () + 4) AS 'DateName',
               getdate () + 4 AS 'DateD'
        連合
        SELECT DATENAME (dw, GETDATE () + 5) AS 'DateName',
               getdate () + 5 AS 'DateD'
        連合
        SELECT DATENAME (dw, GETDATE () + 6) AS 'DateName',
               getdate () + 6 AS 'DateD') クエリ テーブル
4

5 に答える 5

0

SQL Serverを使用すると、master..spt_valuesにクエリを実行して、数値のリスト(数値のリスト全体ではなく、間違いなく1から7)を取得できます。

SELECT 
   row_number () OVER (ORDER BY Number) as Row, 
   DATENAME (dw,CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GetDate())-Number),GetDate()),101) ) AS DtName,
   CONVERT(VARCHAR, CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GetDate())-Number),GetDate()),101), 101) As Dt
FROM (SELECT Number FROM master..spt_values WHERE Number BETWEEN 1 AND 7 AND Type = 'P') t

ちょうど別のアプローチ-それを楽しんでください!そして、これがフィドルです。

幸運を。

于 2013-01-28T16:49:12.133 に答える
0
WITH Dates AS
(
    SELECT DATEADD(DAY, - (DATEPART(DAY, GETDATE()) - 1), CONVERT(VARCHAR, GETDATE(), 101)) as DateDay
    UNION ALL
    SELECT DateDay + 1
    FROM Dates
    WHERE DATEPART(DAY, DateDay) < 7
)

SELECT
    DATEPART(DAY, DateDay),
    DATENAME(DW, DateDay),
    DateDay
FROM Dates
于 2013-01-28T16:41:28.383 に答える