-1

日付を出力するクエリがあり、その日付の 5 か月前の日付を表す列を追加したいと考えています。したがって、出力値が 2012-06 の場合、2012-01 を表示したいと思います。

4

4 に答える 4

1
SELECT 
  unnamed_date_column, 
  5_months_earlier = DATEADD(MONTH, -5, unnamed_date_column)
FROM dbo.unnamed_table;

これらを varchar として格納している場合 (これは にある場合はそうである必要がありyyyy-mm、それをやめるべきです)、次のようにすることができます。

SELECT
  unnamed_date_column, 
  5_months_earlier = DATEADD(MONTH, -5, unnamed_date_column)
FROM 
(
  SELECT unnamed_date_column = CONVERT(DATETIME, unnamed_varchar_column + '-01')
  FROM dbo.unnamed_table
) AS x;

もちろん、エラーが発生する可能性があります。この列に間違ったデータ型を選択すると、誰かが2013-13or1623-99またはwho_datをこの列に入力する可能性があるためです...

于 2013-10-04T21:01:06.390 に答える
0

これを試してください:

DECLARE @DT DATETIME = GETUTCDATE()
SELECT CONVERT(VARCHAR(7),@DT, 120) AS TODAY_DATE, CONVERT(VARCHAR(7),DATEADD(MM,-5,@DT), 120 ) AS BEFORE_5_MONTHS
于 2013-10-08T10:51:20.043 に答える
0
select [column]
  from [table]
 where [datecol] between DATEADD(month, -5, getdate()) and getdate()
于 2013-10-04T20:52:14.447 に答える