Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime SAS(24小时)时间转换为分钟_Datetime_Type Conversion_Sas - Fatal编程技术网

Datetime SAS(24小时)时间转换为分钟

Datetime SAS(24小时)时间转换为分钟,datetime,type-conversion,sas,Datetime,Type Conversion,Sas,我正在尝试将24小时时间值转换为分钟 发件人: 致: 目前我将时间值乘以6017*60,16.55*60,17.30*60 我将如何做到这一点?我做得对吗?我做错了什么?SAS时间值存储为秒。如果它真的是“时间”值,而不是字符串。因此,您可以除以60,而不是乘 data want; input timeval TIME9.; minutes=timeval/60; format minutes BEST12.; format timeval TIME9.; put timeval= minute

我正在尝试将24小时时间值转换为分钟

发件人:

致:

目前我将时间值乘以60
17*60
16.55*60
17.30*60


我将如何做到这一点?我做得对吗?我做错了什么?

SAS时间值存储为秒。如果它真的是“时间”值,而不是字符串。因此,您可以除以60,而不是乘

data want;
input timeval TIME9.;
minutes=timeval/60;
format minutes BEST12.;
format timeval TIME9.;
put timeval= minutes=;
datalines;
17:00:00
16:55:00
17:30:00
;;;;
run;
如果它不是存储为时间值(数字),而是存储为字符串,则需要输入(timeval,TIME9.),以便执行此操作;所以

minutes = input(timeval,TIME9.)/60;

将起作用。

不知道这与SQL有什么关系,但一般来说,假设小时数是0-23,而不是0-12,使用am/pm指示器,则此伪代码

  ( 60.0 * hours )    // convert 0-23 hours to minutes
+ minutes             // minutes don't need conversion
+ ( seconds / 60.0 )  // convert 0-59 seconds to fractional minute
应该以分钟的小数形式给出从一天开始(午夜,00:00:00)的偏移量。如果你有一个am/pm指示器,你需要把它考虑进去,比如:

  ( 60.0 * ( hours + ( isPM ? 12 : 0 ) ) ) // convert 0-23 hours to minutes
+ minutes                                  // minutes don't need conversion
+ ( seconds / 60.0 )                       // convert 0-59 seconds to fractional minutes

我强烈建议编辑这篇文章的格式和正确的语法,因为你的问题不清楚,你执行操作的方法也不清楚。我也会检查那些NUM值,因为根据我的数学,它们是错误的。17:00是1020分钟,16:55不是16.55,而是大约16.92,或1015分钟;17:30是1050分钟(而且显然超过了17:00)。@Sampath\u T。为什么要将其标记为SQL?这些值是持续时间还是“从一天开始算起的分钟数”?它们位于哪个时区?您是否需要担心夏令时?删除了SQL和SAS标记:这与SQL或SAS无关。这假设时间值是某种持续时间。如果是“一天中的某个时间”,并且反映了DST的时区,则此操作将失败。。。奇怪的是,考虑到例子和(稍微不准确的)结果,OP所说的非常清楚。我不认为SAS时间值(与DATETIME相反)包含时区或夏令时,是吗?我不知道,我从未使用过SAS(尽管我使用的是iSeries上的DB2,没有)。鉴于帖子中的“24小时时间值”,我假设这是一天中的某个时间。。。如果不是UTC时间(或者其他一些永远不会使用DST的时区),那么简单地用这种方式划分就没有意义了。不,这是(至少,看起来是)SAS时间值。SAS时间值是我的评论中明确指出的-秒数被解释为时间;也就是说,一段时间。DATETIME是任何特定时间的SAS格式,更类似于SQL概念。据我所知,你不可能对DST或时区有任何时间价值的感觉,尽管我肯定可能是错的。在任何情况下,将时间格式用于除持续时间以外的任何内容都至少会非常令人困惑。嗨,乔,谢谢你的回复…是的,计算是错误的…我找到了一种方法来查找分钟,因为你的回复…小时(Schd_strt_ts)作为Schd_stru HR,分钟(Schd_strt_ts)作为Schd_stru MN,((计算的Schd_STR_HR)*60)+计算出的SCHD_STR_MN作为SCHD_START
  ( 60.0 * hours )    // convert 0-23 hours to minutes
+ minutes             // minutes don't need conversion
+ ( seconds / 60.0 )  // convert 0-59 seconds to fractional minute
  ( 60.0 * ( hours + ( isPM ? 12 : 0 ) ) ) // convert 0-23 hours to minutes
+ minutes                                  // minutes don't need conversion
+ ( seconds / 60.0 )                       // convert 0-59 seconds to fractional minutes