更新以使用给定月份的第1个月

时间:2018-05-08 15:13:01

标签: sql advantage-database-server

我没有任何示例SQL,但使用的是Advantage Architect。我有一张桌子,我有一年(例如2017年),一个月(例如04)。 我想更新另一个表(在我已经识别的字段上使用内连接,所以不要担心那个位)是dd / mm / yyyy格式的日期,并且当天为01对于使用的每个日期,使用上面提到的另一个表中的月份和年份。

My fields

1 个答案:

答案 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;