0
我們將日期保存在int格式的DWH中。 我想做一些簡單的Dateadd計算(加入和減去日期的幾個月),而不必轉換爲日期並轉換回int。未使用函數的日期加載
我已經能夠達到什麼收盤使用2種方法工作:
1.使用模和絕對功能:
DECLARE @EffectiveDate INT = 20121003,
@Diff INT = -12
SELECT @EffectiveDate + (Abs(@Diff)/@diff) * (Abs(@Diff) + mnt)/12 *
10000 + (
Abs(@Diff)/@diff) * ((Abs(@Diff) + mnt - 1)%12 - mnt + 1) *
100
FROM (SELECT @EffectiveDate/100%100 Mnt)T
2.By計算今年月,增加/減少所需的月再除以12:
DECLARE @EffectiveDate INT = 20121003,
@Diff INT = -12
SELECT (yr * 12 + mnt + @Diff)/12 * 10000 +
(yr * 12 + mnt + @Diff)%12 * 100 + 1
FROM (SELECT @EffectiveDate/100%100 Mnt,
@EffectiveDate/10000 Yr)T
在這兩種情況下,我拿出了同樣的問題,12月份不正確的結果,一年0和效果表示爲好。
任何想法?
沒有轉換爲日期,您將有閏年問題增加或減少天)。 –
我對確切的日期,只是月份和年份沒有興趣,所以閏年對我沒有任何影響。 – Gidil