我有一个日期字段包含年份和月份。字段名称new_TarikhSebenarTamatPengajian。数据的例子199110(格式:YYYYMM)。我想添加日期来设置新的格式要求是(YYYYMMDD)。 对于可用数据,我可以在该月的月末之后添加日期。 实施例199101 = 19910130或199102 = 19910228 OR 199103 = 19910231
此代码对我不起作用
选择DMSTAG.dbo.TEMP_AKAUN_MARA.new_TarikhSebenarTamatPengajian 案件 什么时候(new_TarikhSebenarTamatPengajian,2)= 01那么CONCAT(new_TarikhSebenarTamatPengajian,31) 什么时候(new_TarikhSebenarTamatPengajian,2)= 02 THEN CONCAT(new_TarikhSebenarTamatPengajian,28) 正确的时候(new_TarikhSebenarTamatPengajian,2)= 03那么CONCAT(new_TarikhSebenarTamatPengajian,31)
什么时候(new_TarikhSebenarTamatPengajian,2)= 04那么CONCAT(new_TarikhSebenarTamatPengajian,30)什么时候 右(new_TarikhSebenarTamatPengajian,2)= 05那么 CONCAT(new_TarikhSebenarTamatPengajian,31)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 06那么 CONCAT(new_TarikhSebenarTamatPengajian,30)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 07那么 CONCAT(new_TarikhSebenarTamatPengajian,31)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 08那么 CONCAT(new_TarikhSebenarTamatPengajian,31)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 09那么 CONCAT(new_TarikhSebenarTamatPengajian,30)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 10那么 CONCAT(new_TarikhSebenarTamatPengajian,31)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 11那么 CONCAT(new_TarikhSebenarTamatPengajian,30)WHEN 右(new_TarikhSebenarTamatPengajian,2)= 12那么 CONCAT(new_TarikhSebenarTamatPengajian,31)
结束新日期来自[dbo]。[TEMP_AKAUN_MARA]
答案 0 :(得分:1)
假设你的列名是DateWithOutMonth:
Select Convert(nvarchar(8), Dateadd(day, -1, Dateadd(month, 1, Convert(datetime, DateWithOutMonth + '01'))) , 112)
from your table
代码解释:
01
添加到日期值的末尾,因此该值始终是一个月的开头答案 1 :(得分:0)
您只需执行此操作即可实现功能。
我希望这会对你有所帮助
SELECT
CASE
WHEN CRSE_DATE = '199101' THEN '19910130'
WHEN CRSE_DATE = '199102' THEN '19910228'
WHEN CRSE_DATE = '199103' THEN '19910231'
END
FROM
table_name
答案 2 :(得分:0)
试试这个:
SELECT id,crse_date,
CASE
WHEN RIGHT(crse_date,2) = 01 THEN CONCAT(crse_date,31)
WHEN RIGHT(crse_date,2) = 02 THEN CONCAT(crse_date,28)
WHEN RIGHT(crse_date,2) = 03 THEN CONCAT(crse_date,31)
WHEN RIGHT(crse_date,2) = 04 THEN CONCAT(crse_date,30)
END AS newdate
FROM yourtable
After you alter your table. Here is new query for your problem
Takenote : your field name is not advisable
SELECT new_TarikhSebenarTamatPengajian,
CASE
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 01 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 02 THEN CONCAT(new_TarikhSebenarTamatPengajian,28)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 03 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 04 THEN CONCAT(new_TarikhSebenarTamatPengajian,30)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 05 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 06 THEN CONCAT(new_TarikhSebenarTamatPengajian,30)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 07 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 08 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 09 THEN CONCAT(new_TarikhSebenarTamatPengajian,30)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 10 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 11 THEN CONCAT(new_TarikhSebenarTamatPengajian,30)
WHEN RIGHT(new_TarikhSebenarTamatPengajian,2) = 12 THEN CONCAT(new_TarikhSebenarTamatPengajian,31)
END AS newdate
FROM TEMP_AKAUN_MARA