我的变量有时间值,如515,应该像5:15一样读取 为此,我使用了以下代码 -
data flights;
set cs.flights;
format sched_dep_time hhmm. dep_time hhmm. ;
run;
但我得到515的结果为0.09 我认为它是从上午12:00开始计算的时间。 我也用时间。格式但没有用。 我该如何处理这个?
答案 0 :(得分:0)
格式仅更改值的显示方式。在这种情况下,我们需要更改实际值,使其表示自午夜以来的秒数。
以下方法(以及所请求的time_diff):
data flights;
sched_dep_time=515;
dep_time=1215;
format sched_dep_time dep_time time_diff hhmm. ;
sched_dep_time=hms(round(sched_dep_time,100)/100
,mod(sched_dep_time,100),0);
dep_time=hms(round(dep_time,100)/100
,mod(dep_time,100),0);
time_diff=sched_dep_time-dep_time;
put (_all_)(=);
run;
给出:
sched_dep_time=5:15 dep_time=12:15 time_diff=-7:00
答案 1 :(得分:0)
如您所知,SAS将时间值存储为午夜以来的秒数。所以515的值是午夜后的515秒。要获得代表05:15的值,您需要进行一些转换。
SAS具有INPUT功能,用于读取字符数据,您可以指定数据的格式。这允许用于读取字符值< 0515'并将其转换为数字18900,表示时间05:15。
下面使用PUT函数将数值515转换为字符值' 515'和INPUT函数将其转换为18900.时间格式使18900打印为05:15:00。
sched_dep_time=515 SchedDepTime=5:15:00 dep_time=1515 DepTime=15:15:00
返回:
@Transactional
public void deleteInsert(List<TableB> bList) {
TableA tableA = aRepository.findByEtc(...);
bRepository.deleteByTableA(tableA);
bRepository.flush();
bRepository.save(bList);
}