我正在尝试将句点列表转换为该月的第一天。
下的期间和新产出的例子Period new_date
DEC-16 01/12/2016
JAN-17 01/01/2017
FEB-17 01/02/2017
我尝试过很多东西,但是我遇到了不同的类型。我也想以最有效的方式来做这个相当大的表。
我在SQL server
中这样做答案 0 :(得分:0)
对不起我之前的回答,我误解了。你想要这个:
SELECT [Period], DATEADD(
Month,
CASE LEFT([Period], 3) WHEN 'JAN' THEN 1 WHEN 'FEB' THEN 2 WHEN 'MAR' THEN 3 WHEN 'APR' THEN 4 WHEN 'MAY' THEN 5 WHEN 'JUN' THEN 6 WHEN 'JUL' THEN 7 WHEN 'AUG' THEN 8 WHEN 'SEP' THEN 9 WHEN 'OCT' THEN 10 WHEN 'NOV' THEN 11 WHEN 'DEC' THEN 12 END - 1,
DATEADD(Year, CAST(SUBSTRING([Period], 5, 100) as int), '2000-01-01')) AS [new_date]
FROM (
SELECT 'DEC-16' as [Period]
UNION ALL SELECT 'JAN-17' AS [Period]
UNION ALL SELECT 'FEB-17' AS [Period]
) AS [TEST]
答案 1 :(得分:0)
试试这个,
declare @t table(Period varchar(50))
insert into @t VALUES
('DEC-16')
,('JAN-17')
,('FEB-17')
select Period, cast('01-'+Period as date) new_Date
from @t
答案 2 :(得分:-2)
SELECT DATEADD(月,DATEDIFF(月,0,演员('1 - '+左(句号,3)+右(句号,3)作为日期)),0)来自[table_name]的AS StartOfMonth