查找上一个星期五的 SSIS 表达式 [英] SSIS expression to find previous Friday

查看:32
本文介绍了查找上一个星期五的 SSIS 表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 SQL Server 2008,我建立了一个基于当前日期的动态值的 SSIS 变量.如果当前日期是星期一,我希望它的值是星期五,这是构建的表达式:

Using SQL Server 2008, I have built an SSIS variable with dynamic value base on current date. I would like to have its value to be Friday if the current day is Monday, and here is the expression built:

    DATEPART("dw",GETDATE()) != 2?
RIGHT("0" + (DT_WSTR,2)MONTH(DATEADD("dd", -1, GETDATE())), 2) + "/" 
    + RIGHT("0" + (DT_WSTR,2)DAY(DATEADD("dd", -1, GETDATE())), 2) + "/" + 
(DT_WSTR,4)YEAR(DATEADD("dd", -1, GETDATE())) : RIGHT("0" + (DT_WSTR,2)MONTH(DATEADD("dd", -1, GETDATE())), 2) + "/" 
    + RIGHT("0" + (DT_WSTR,2)DAY(DATEADD("dd", -3, GETDATE())), 2) + "/" + 
(DT_WSTR,4)YEAR(DATEADD("dd", -1, GETDATE()))

问题:月份或年份更改时不准确.有没有更好的方法来做到这一点?帮助将不胜感激.谢谢.

Issue: it is not accurate when the month or year changed. Is there any better way to do this? Help would be appreciated. Thanks.

推荐答案

这行得通吗(你可以用 GETDATE() 代替 @date,我只是用它来轻松测试不同的日期)

Will this work (you can substitute GETDATE() for @date, I just used that to easily test out different dates)

DECLARE @date DATETIME
SET @date = '2013-01-14'

SELECT
    PrevFriday = CASE WHEN DATEPART(weekday, @date) <> 2 THEN @date
                      ELSE DATEADD(DAY, -3, @date)
                 END

更新:这里是一样的,但在 SSIS 变量表达式中完成:

DATEPART("dw", GETDATE()) != 2?
GETDATE():
DATEADD("dw", -3, GETDATE())

更新 #2:这里是如何返回任何日期的前一个星期五,而不仅仅是星期一

SELECT DATEADD(DAY, -1 - (DATEPART(weekday, @date) % 7), @date)

这篇关于查找上一个星期五的 SSIS 表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆