地震会商技术系统地震数据专家[DataEQ]

DatistEQ之DateTime2与DateTime3函数

2020-10-26  本文已影响0人  了无_数据科学

这个培训过程中产生两个问题,为什么把AddDays等函数的分类变成了“内部使用”,是不是分类搞错了呢?有CreateDateTime函数,为什么还要用DateTime2和DateTime3呢?

说到日期型函数,满眼的心酸泪,太多太多了,多得都记不过来。目前系统中可用日期函数有122个,想要记住它们着实不易。日期数据由年、月、日、时、分、秒共6个参数构成,日期类函数,也是从这些参数演化而来,如Year()、Month()、Day()、Hour()、Minute()、Second()和Millisecond(),用于取当前日期中某个参数的值。显然,这些取值或计算方式基本相似,用于获取不同的参数,需要不同的函数来实现,由此派生出大量的函数。

为了减化使用过程,研发的DateTime2、DateTime3和DateDiff这三个函数,以简便方式,来实现日期推算与格式化显示,同时也将原有89个日期,移到内部使用分组,意为不建议使用。

1、DateTime2函数
函数格式:DateTime2(datetime, modifier, modifier, …)
返回值类型:日期型
参数个数:不少于1个
函数说明:推算日期。在一个日期的基础上,通过计算,生成一个新的日期。
即:返回值 = datetime + modifier + modifier + ……

参数说明:

对输入时间datetime,按modifier调整后,输出日期字符串'yyyy-MM-dd HH:mm:ss.fff'。
其中datetime是必须的,modifier为可选项。
datetime的支持格式字符串:
  1.yyyy-MM-dd
  2.yyyy-MM-dd HH:mm
  3.yyyy-MM-dd HH:mm:ss
  4.yyyy-MM-dd HH:mm:ss.fff
  5.yyyy-MM-ddTHH:mm  其中T是日期和时间分割符
  6.yyyy-MM-ddTHH:mm:ss
  7.yyyy-MM-ddTHH:mm:ss.fff
  8.HH:mm
  9.HH:mm:ss
  10.HH:mm:ss.fff
  11.now
修正参数modifier可有可无,如果有多个修正参数,按从左到右原则依次修正,而且后修正参数是基于前修正参数据结果的再次修正。支持修正字符串有两类:
  1.加减时间类,格式:±N m,其中m可为:年,y,月,m,天,d,时,h,分,mi,秒,s,毫秒,ms
  2.取特定时间类,支持:年初,年末,季初,季末,月初,月末,Nth周,周一,周二,周三,周四,周五,周六,周日
    其中Nth周,表示当年的第N周的周一。

示例:

日期推算:
Datetime2('now')  输出:2020-10-26 13:49:07.495
Datetime2('now','5天')  输出:2020-10-31 13:49:07.495
Datetime2('now','+6天')  输出:2020-11-01 13:49:07.495
Datetime2('now','-6天')  输出:2020-10-20 13:49:07.495
Datetime2('2020-10-26','-6d')  输出:2020-10-20 00:00:00.000
Datetime2('2020-10-26','-6月') 输出:2020-04-26 00:00:00.000

特定的日期:
Datetime2('2020-10-26','年初') 输出:2020-01-01 00:00:00.000
Datetime2('2020-10-26','年末') 输出:2020-12-31 00:00:00.000
Datetime2('2020-10-26','季初') 输出:2020-10-01 00:00:00.000
Datetime2('2020-10-26','季末') 输出:2020-12-31 00:00:00.000
Datetime2('2020-10-26','月初') 输出:2020-10-01 00:00:00.000
Datetime2('2020-10-26','月末') 输出:2020-10-31 00:00:00.000
Datetime2('2020-10-26','周五') 输出:2020-10-30 00:00:00.000
Datetime2('2020-10-26','25周') 输出:2020-06-15 00:00:00.000(2020第25周的周一)

多个算子:
Datetime2('2020-10-26','+7天','周五') 输出:2020-11-06 00:00:00.000

2、DateTime3函数
函数格式:DateTime3(format, datetime, modifier, modifier, …)
返回值类型:字符型
参数个数:不少于2个
函数说明:推算日期,并以特定的格式输出。在一个日期的基础上,通过计算,生成一个新的日期,并以format格式输出。DateTime3是在DateTime2的基础上,进行格式化输出。
即:返回值 = format( datetime + modifier + modifier + ……)

参数说明:

对输入时间datetime,按modifier调整后,以format的格式输出,功能与DateTime2函数相近。
其中format和datetime是必须的,modifier为可选项。
参数datetime, modifier格式,参见DateTime2函数。
format定义输出日期的格式。下面列出了可被合并以构造自定义模式的模式,这些模式是区分大小写的:
  gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
  y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
  yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
  yyyy 包括纪元的四位数的年份。
  M 月份数字。一位数的月份没有前导零。
  MM 月份数字。一位数的月份有一个前导零。
  MMM 月份的缩写名称,如:1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月。
  MMMM 月份的完整名称,如:一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月。
  d 月中的某一天。一位数的日期没有前导零。
  dd 月中的某一天。一位数的日期有一个前导零。
  ddd 周中某天的缩写名称,如:周日、周一、周二、周三、周四、周五、周六。
  dddd 周中某天的完整名称,如:星期日、星期一、星期二、星期三、星期四、星期五、星期六。
  h 12 小时制的小时。一位数的小时数没有前导零。
  hh 12 小时制的小时。一位数的小时数有前导零。
  H 24 小时制的小时。一位数的小时数没有前导零。
  HH 24 小时制的小时。一位数的小时数有前导零。
  m 分钟数字。一位数的分钟数没有前导零。
  mm 分钟数字。一位数的分钟数有前导零。
  s 秒数字。一位数的秒数没有前导零。
  ss 秒数字。一位数的秒数有前导零。
  f 毫秒数字。
  j 一年中的第几天,01-366。
  J 儒略日数。
  w 星期数,0-6,0是星期天。
  W 一年中的第几周,00-53。

示例:

Datetime3('y','2020-10-26')  输出:2020
Datetime3('yy','2019-10-26') 输出:19
Datetime3('M','2009-9-6')    输出:9
Datetime3('MM','2009-9-6')   输出:09
Datetime3('MMM','2009-9-6')  输出:9月
Datetime3('MMMM','2009-9-6') 输出:九月

组合应用:
Datetime3('yyMMdd','2009-9-6')       输出:090906
Datetime3('yy年MM月dd日','2009-9-6') 输出:09年09月06日
Datetime3('yyyy年MM月dd日 dddd','2009-9-6')   输出:2009年09月06日 星期日
Datetime3('第W周','2009-9-6')        输出:第36周
Datetime3('第W周','2009-9-6','+7d')  输出:第37周

3、DateDiff函数
函数格式:DateDiff(interval,startDatetime,endDatetime)
返回值类型:数值型
参数个数:3个
函数说明:求两个时间的间隔。

参数说明:

求两个指定日期间的时间间隔数目。
其中时间startDatetime,endDatetime格式,参见DateTime2函数。
必选参数interval,为字符串表达式,设定时间差的时间的间隔。
参数的设定值为:年,y,季,q,月,m,周,w,天,d,时,h,分,mi,秒,s,毫秒,ms

示例:

DateDiff('天','2017-10-10','2018-11-30')  输出: 416
DateDiff('d','2017-10-10','2018-11-30')  输出: 416
DateDiff('周','2017-10-10','2018-11-30')  输出:59.4285714285714

4、不建议使用,而隐藏的日期型函数列表(89个):

Year()  取当前系统的年
Month() 取当前月
Day()   取当前日
Hour()  取当前时
Minute()    取当前分
Second()    取当前秒
Millisecond()   取当前毫秒
AddDays(Datetime,Real)  将指定的天数加到Datetime上,Real参数可以是负数也可以是正数。
AddHours(Datetime,Real) 将指定的小时数加到Datetime上,Real参数可以是负数也可以是正数。
AddMilliseconds(Datetime,Real)  将指定的毫秒数加到Datetime上,Real参数可以是负数也可以是正数。
AddMinutes(Datetime,Real)   将指定的分钟数加到Datetime上,Real参数可以是负数也可以是正数。
AddMonths(Datetime,Integer) 将指定的月份数加到Datetime上,Real参数可以是负数也可以是正数。
AddSeconds(Datetime,Real)   将指定的秒数加到Datetime上,Real参数可以是负数也可以是正数。
AddYears(Datetime,Integer)  将指定的年份数加到Datetime上,Real参数可以是负数也可以是正数。
DatetimeDifference(BaseDateTime,Datetime)   返回Datetime-BaseDateTime的时间间隔。
Day(Datetime)   返回Datetime的天部分。返回结果为1 到31 之间的整数。
DayOfMonth(Datetime)    获取日期为该月中的第几天。
DayOfWeek(Datetime) 表示的日期是星期几,返回结果为0 到6之间的整数。
DayOfWeek_cn(Datetime)  表示的日期是星期几,返回结果为星期日,星期一,星期二,星期三,星期四,星期五,星期六。
DayOfWeek_en(Datetime)  表示的日期是星期几,返回结果为Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday。
DayOfWeek_en_short(Datetime)    表示的日期是星期几,返回结果为Sun, Mon, Tue, Wed, Thu, Fri, Sat。
DayOfYear(Datetime) 获取指定日期是该年中的第几天。
DaysDifference(BaseDateTime,Datetime)   以小数的形式返回从日期BaseDateTime到日期Datetime的天数。如果Datetime在BaseDateTime之前,则该函数返回负值。
FirstDayOfMonth(Datetime)   获取指定日期所在月份第一天。
LastDayOfMonth(Datetime)    获取指定日期所在月份最后一天。
FirstDayOfPreviousMonth(Datetime)   获取指定日期的上个月第一天。
LastDayOfPrdviousMonth(Datetime)    获取指定日期的上个月的最后一天。
FirstDayOfNextMonth(Datetime)   获取指定日期的下个月第一天。
LastDayOfNextMonth(Datetime)    获取指定日期的下个月的最后一天。
FirstDayOfQuarter(Datetime) 获取指定日期所在季度份第一天。
LastDayOfQuarter(Datetime)  获取指定日期所在季度份最后一天。
FirstDayOfPreviousQuarter(Datetime) 获取指定日期的上一季度第一天。
LastDayOfPrdviousQuarter(Datetime)  获取指定日期的上一季度的最后一天。
FirstDayOfNextQuarter(Datetime) 获取指定日期的下一季度第一天。
LastDayOfNextQuarter(Datetime)  获取指定日期的下一季度的最后一天。
FirstDayOfYear(Datetime)    获取指定日期所在年份第一天。
LastDayOfYear(Datetime) 获取指定日期所在年份最后一天。
FirstDayOfPreviousYear(Datetime)    获取指定日期的上一年第一天。
LastDayOfPrdviousYear(Datetime) 获取指定日期的上一年的最后一天。
FirstDayOfNextYear(Datetime)    获取指定日期的下一年第一天。
LastDayOfNextYear(Datetime) 获取指定日期的下一年的最后一天。
format_DateTime(DateTime,DateTimeFormat)    将日期与时间转化为指定格式的文本,DateTimeFormat为日期格式:(年-月-日 时:分:秒.毫秒) yyyy-MM-dd HH:mm:ss(HH为24小时制,hh为12小时制)。
Format_TimeSpan(TimeSpan,TimeSpanFormat)    将时间间隔转化为指定格式的文本,TimeSpanFormat为格式:dd\天hh\时mm\分ss\秒,注意反斜杠。
Format_TimeSpan(TimeSpan)   将时间间隔转化为指定格式的文本。
Hour(Datetime)  返回Datetime的小时部分。返回结果为0 至23 之间的整数。
HoursDifference(BasedDatetime,Datetime) 以小数的形式返回从日期BasedDatetime到日期Datetime的小时数。如果Datetime在BasedDatetime之前,则该函数返回负值。
Milliseconds(Datetime)  返回Datetime的毫秒钟部分。返回结果为0到999之间的整数。
MillisecondsDifference(BaseDatetime,Datetime)   以小数的形式返回从日期BaseDatetime到日期Datetime的毫秒数。如果Datetime在BaseDatetime之前,则该函数返回负值。
Minute(Datetime)    返回Datetime的分钟部分。返回结果为0 到59 之间的整数。
MinutesDifference(BaseDatetime,Datetime)    以小数的形式返回从日期BaseDatetime到日期Datetime的分钟数。如果Datetime在BaseDatetime之前,则该函数返回负值。
MondayOfWeek(DateTime)  计算指定日期本周的星期一对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
TuesdayOfWeek(DateTime) 计算指定日期本周的星期二对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
WednesdayOfWeek(DateTime)   计算指定日期本周的星期三对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
ThursdayOfWeek(DateTime)    计算指定日期本周的星期四对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
FridayOfWeek(DateTime)  计算指定日期本周的星期五对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
SaturdayOfWeek(DateTime)    计算指定日期本周的星期六对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
SundayOfWeek(DateTime)  计算指定日期本周的星期日对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
MondayOfPreviousWeek(DateTime)  计算指定日期上周的星期一对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
TuesdayOfPreviousWeek(DateTime) 计算指定日期上周的星期二对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
WednesdayOfPreviousWeek(DateTime)   计算指定日期上周的星期三对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
ThursdayOfPreviousWeek(DateTime)    计算指定日期上周的星期四对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
FridayOfPreviousWeek(DateTime)  计算指定日期上周的星期五对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
SaturdayOfPreviousWeek(DateTime)    计算指定日期上周的星期六对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
SundayOfPreviousWeek(DateTime)  计算指定日期上周的星期日对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
MondayOfNextWeek(DateTime)  计算指定日期下周的星期一对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
TuesdayOfNextWeek(DateTime) 计算指定日期下周的星期二对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
WednesdayOfNextWeek(DateTime)   计算指定日期下周的星期三对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
ThursdayOfNextWeek(DateTime)    计算指定日期下周的星期四对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
FridayOfNextWeek(DateTime)  计算指定日期下周的星期五对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
SaturdayOfNextWeek(DateTime)    计算指定日期下周的星期六对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
SundayOfNextWeek(DateTime)  计算指定日期下周的星期日对应的日期。国际标准ISO 8601将星期一定为一星期的第一天。
Month(Datetime) 返回Datetime的月份部分。返回结果为1 到12 之间的整数。
MonthsDifference(BaseDatetime,Datetime) 以小数的形式返回从BaseDatetime到Datetime月数。这是基于每月30.0 天的近似数字。如果Datetime在BaseDatetime之前,则该函数返回负值。
Month_cn(Datetime)  返回Datetime的月份部分。返回结果为一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月。
Month_en(Datetime)  返回Datetime的月份部分。返回结果为January,February,March,April,May,June,July,August,September,October,November,December。
Month_en_short(Datetime)    返回Datetime的月份部分。返回结果为Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec。
Second(Datetime)    返回Datetime的秒钟部分。返回结果为0 到59 之间的整数。
SecondsDifference(BaseDatetime,Datetime)    以小数的形式返回从日期BaseDatetime到日期Datetime的秒数。如果Datetime在BaseDatetime之前,则该函数返回负值。
TimeHoursDifference(BaseTime,Time)  以整数的形式返回从日期BaseTime到日期Time的小时数。如果Time在BaseTime之前,则该函数返回负值。
TimeMillisecondsDifference(BaseTime,Time)   以整数的形式返回从日期BaseTime到日期Time的毫秒数。如果Time在BaseTime之前,则该函数返回负值。
TimeMinutesDifference(BaseTime,Time)    以整数的形式返回从日期BaseTime到日期Time的分钟数。如果Time在BaseTime之前,则该函数返回负值。
TimeSecondsDifference(BaseTime,Time)    以整数的形式返回从日期BaseTime到日期Time的秒数。如果Time在BaseTime之前,则该函数返回负值。
TimeSpan2HM(TimeSpan)   将时间间隔转换为,总小时数:分钟,如25:50表示25小时50分钟。
toShortDate(DateTime)   将日期时间(可为字符串格式)转化为短日期格式,支持常见的日期格式,如2005-11-5 13:47:04,输出2005-11-5。
toShortTime(DateTime)   将日期时间(可为字符串格式)转化为短时间格式,支持常见的日期格式,如2005-11-5 13:47:04,输出13:47:04。
WeekNoOfYear(Datetime)  获取指定日期所在星期是该年中的第几星期。
WeeksDifference(BaseDatetime,Datetime)  以小数的形式返回从日期BaseDatetime至日期Datetime的周数。这基于每周7.0 天。如果Datetime在BaseDatetime之前,则该函数返回负值。
Year(Datetime)  返回Datetime的年份部分。返回结果为整数,如2002。
YearsDifference(BasedDatetime,Datetime) 以小数的形式返回从日期BasedDatetime至日期Datetime的年数。这是基于每年365.0 天的近似数字。如果Datetime在BasedDatetime之前,则该函数返回负值。
上一篇下一篇

猜你喜欢

热点阅读