我需要一个日期栏 条件:如果日期列值是除了当月1日之外的任何日期,那么同样必须替换为该月的第1天,例如今天它的05-01-2017,它有将被01-01-2017取代。同样地,这个月的第15个月。
我使用以下查询实现了相同的目标:
select 'date column',
case when datediff(DAY,-15, 'date column') != 41043 then
DATEADD(dd,-(DAY( 'date column')-1), 'date column')
end
from TABLE
我通过运行以下查询破解了这个问题:
select datediff(DAY,-15,'date column')
from TABLE
这会提供值“41043”,我在查询中使用了这个值。
但我有两个问题
请建议。
答案 0 :(得分:2)
如果不使用CASE
,还有一种更简单的方法,您可以随时添加16天(31天的月份),然后找到first day of the month,如下所示:
SELECT
DATEADD(month, DATEDIFF(month, 0, DATEADD(DAY, 16, dateColumn)), 0) AS firstDayOfMonth
FROM
yourTable;
答案 1 :(得分:1)
SELECT
'date column'
,CASE
WHEN DATEPART(DAY, 'date column') < 15 THEN
CONVERT(VARCHAR(10), DATEADD(mm, DATEDIFF(mm, 0, 'date column'), 0), 105)
WHEN DATEPART(DAY, 'date column') >= 15 THEN
CONVERT(VARCHAR(10), DATEADD(mm, DATEDIFF(mm, 0, 'date column'), 14), 105)
END
FROM
[TABLE]