这是今天工作中遇到的一个问题:database只能显示具体的日期(何年何月何日何时),但我更关心这个日期是不是工作日,即周一至周五。一番搜索后,找到了一个非常好用的SQL:DATEPART(datepart,date)
datepart 代表你想显示的是year,quarter,month,week,day,etc
date 代表你具体选择哪个attribute
举个简单的例子:
SET DATEFIRST 1
SELECT DATE, DATEPART (dw,t.DATE) AS DAY
FROM Table
NOTES:上面表格里的6表示周六
细心的你可能已经发现了,这里多了一行SQL:SET DATEFIRST 1,这是因为默认设置里的1是周日,依此类推,7是周六。为了让结果更简单明了,加了上述SQL语句,可以直接转化成1是周一,.....,7是周天。
再来谈谈应用,在trading system或risk system中,经常会出现settlement date或cash flow date,有时为了检验这些Date是否有feed issue,就需要查看它们是否在工作日,如果Date出现在周六日,则很大程度上是feed issue,因为一般来说,trade都是在business days settled的。如此,运用以上SQL语句就可以快速找到哪些trade存在feed issue,进而思考解决方案了。
你也可以参考以下资源,对这个SQL语句有较详细的说明
https://www.w3schools.com/sql/func_datepart.asp
小菜鸟祝大家学习快乐!