我没有任何示例SQL,但使用的是Advantage Architect。我有一张桌子,我有一年(例如2017年),一个月(例如04)。 我想更新另一个表(在我已经识别的字段上使用内连接,所以不要担心那个位)是dd / mm / yyyy格式的日期,并且当天为01对于使用的每个日期,使用上面提到的另一个表中的月份和年份。
答案 0 :(得分:1)
ADS提供有限的日期处理功能。要使用的最简单的日期格式似乎是YYYY-MM-DD
,但要从您的列转换为您正在寻找的日期会有些令人费解。
这是一个可以帮助你解决问题的例子。
create table #temp (calyear numeric(4, 0), calmonth numeric(2,0));
insert into #temp (calyear, calmonth) values (2017, 10);
insert into #temp (calyear, calmonth) values (2017, 7);
/*
Start convoluted workaround here. Cast the result of the concatenation below
(which creates a string in the format 'YYYY-MM-DD') into a date value
*/
select cast(txtdate as SQL_DATE) as newdate from
(
/*
Concatenate year, month (adding leading zero if needed to make two-digit)
and month
*/
select
trim(cast(calyear as SQL_Char)) + '-' +
right('00' + trim(cast(calmonth as SQL_Char)), 2) +
'-01' as txtdate from #temp
) t;