当前位置: 首页 > news >正文

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

文章目录

    • openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符
      • 23.1 时间日期操作符
      • 23.2 时间/日期函数
      • 23.3 TIMESTAMPDIFF
      • 23.4 EXTRACT
      • 23.5 date_part

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

23.1 时间日期操作符

用户在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生用户非预期的结果。 比如下面示例没有明确数据类型就会出现异常错误。

SELECT date '2001-10-01' - '7' AS RESULT;

表 1 时间和日期操作符

操作符示例
+openGauss=# SELECT date '2001-9-28' + integer '7' AS RESULT; result \------------ 2001-10-05 00:00:00 (1 row)
openGauss=# SELECT date '2001-09-28' + interval '1 hour' AS RESULT; result \--------------------- 2001-09-28 01:00:00 (1 row)
openGauss=# SELECT date '2001-09-28' + time '03:00' AS RESULT; result \-------------------- 2001-09-28 03:00:00 (1 row)
openGauss=# SELECT interval '1 day' + interval '1 hour' AS RESULT; result \---------------- 1 day 01:00:00 (1 row)
openGauss=# SELECT timestamp '2001-09-28 01:00' + interval '23 hours' AS RESULT; result \--------------------- 2001-09-29 00:00:00 (1 row)
openGauss=# SELECT time '01:00' + interval '3 hours' AS RESULT; result \---------- 04:00:00 (1 row)
-openGauss=# SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result \-------- 3 days (1 row)
openGauss=# SELECT date '2001-10-01' - integer '7' AS RESULT; result \--------------------- 2001-09-24 00:00:00 (1 row)
openGauss=# SELECT date '2001-09-28' - interval '1 hour' AS RESULT; result \--------------------- 2001-09-27 23:00:00 (1 row)
openGauss=# SELECT time '05:00' - time '03:00' AS RESULT; result \---------- 02:00:00 (1 row)
openGauss=# SELECT time '05:00' - interval '2 hours' AS RESULT; result \---------- 03:00:00 (1 row)
openGauss=# SELECT timestamp '2001-09-28 23:00' - interval '23 hours' AS RESULT; result \--------------------- 2001-09-28 00:00:00 (1 row)
openGauss=# SELECT interval '1 day' - interval '1 hour' AS RESULT; result \---------- 23:00:00 (1 row)
openGauss=# SELECT timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' AS RESULT; result \---------------- 1 day 15:00:00 (1 row)
*openGauss=# SELECT 900 * interval '1 second' AS RESULT; result \---------- 00:15:00 (1 row)
openGauss=# SELECT 21 * interval '1 day' AS RESULT; result \--------- 21 days (1 row)
openGauss=# SELECT double precision '3.5' * interval '1 hour' AS RESULT; result \---------- 03:30:00 (1 row)
/openGauss=# SELECT interval '1 hour' / double precision '1.5' AS RESULT; result \---------- 00:40:00 (1 row)

23.2 时间/日期函数

  • age(timestamp, timestamp)

    描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负,入参可以都带timezone或都不带timezone。

    返回值类型:interval

    示例:

    openGauss=# SELECT age(timestamp '2001-04-10', timestamp '1957-06-13');age           
    -------------------------43 years 9 mons 27 days
    (1 row)
    
  • age(timestamp)

    描述:当前时间和参数相减,入参可以带或者不带timezone。

    返回值类型:interval

    示例:

    openGauss=# SELECT age(timestamp '1957-06-13');age           
    -------------------------60 years 2 mons 18 days
    (1 row)
    
  • clock_timestamp()

    描述:实时时钟的当前时间戳。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT clock_timestamp();clock_timestamp        
    -------------------------------2017-09-01 16:57:36.636205+08
    (1 row)
    
  • current_date

    描述:当前日期。

    返回值类型:date

    示例:

    openGauss=# SELECT current_date;date    
    ------------2017-09-01
    (1 row)
    
  • current_time

    描述:当前时间。

    返回值类型:time with time zone

    示例:

    openGauss=# SELECT current_time;timetz       
    --------------------16:58:07.086215+08
    (1 row)
    
  • current_timestamp

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT current_timestamp;pg_systimestamp        
    ------------------------------2017-09-01 16:58:19.22173+08
    (1 row)
    
  • date_part(text, timestamp)

    描述:获取日期/时间值中子域的值,例如年或者小时的值。等效于extract(field from timestamp)。

    timestamp类型:abstime、date、interval、reltime、time with time zone、time without time zone、timestamp with time zone、timestamp without time zone。

    返回值类型:double precision

    示例:

    openGauss=# SELECT date_part('hour', timestamp '2001-02-16 20:38:40');date_part 
    -----------20
    (1 row)
    
  • date_part(text, interval)

    描述:获取日期/时间值中子域的值。获取月份值时,如果月份值大于12,则取与12的模。等效于extract(field from timestamp)。

    返回值类型:double precision

    示例:

    openGauss=# SELECT date_part('month', interval '2 years 3 months');date_part 
    -----------3
    (1 row)
    
  • date_trunc(text, timestamp)

    描述:截取到参数text指定的精度。

    返回值类型:interval、timestamp with time zone、timestamp without time zone

    示例:

    openGauss=# SELECT date_trunc('hour', timestamp  '2001-02-16 20:38:40');date_trunc      
    ---------------------2001-02-16 20:00:00
    (1 row)
    
  • trunc(timestamp)

    描述:默认按天截取。

    示例:

    openGauss=# SELECT trunc(timestamp  '2001-02-16 20:38:40');                                                                                                                                                                   trunc
    ---------------------
    2001-02-16 00:00:00
    (1 row)
    
  • daterange(arg1, arg2)

    描述:获取时间边界信息。arg1和arg2的类型为date。

    返回值类型:daterange

    示例:

    openGauss=# select daterange('2000-05-06','2000-08-08');daterange        
    -------------------------[2000-05-06,2000-08-08)
    (1 row)
    
  • extract(field from timestamp)

    描述:获取小时的值。

    返回值类型:double precision

    示例:

    openGauss=# SELECT extract(hour from timestamp '2001-02-16 20:38:40');date_part 
    -----------20
    (1 row)
    
  • extract(field from interval)

    描述:获取月份的值。如果大于12,则取与12的模。

    返回值类型:double precision

    示例:

    openGauss=# SELECT extract(month from interval '2 years 3 months');date_part 
    -----------3
    (1 row)
    
  • isfinite(date)

    描述:测试是否为有效日期。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT isfinite(date '2001-02-16');isfinite 
    ----------t
    (1 row)
    
  • isfinite(timestamp)

    描述:测试判断是否为有效时间。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT isfinite(timestamp '2001-02-16 21:28:30');isfinite 
    ----------t
    (1 row)
    
  • isfinite(interval)

    描述:测试是否为有效区间。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT isfinite(interval '4 hours');isfinite 
    ----------t
    (1 row)
    
  • justify_days(interval)

    描述:将时间间隔以月(30天为一月)为单位。

    返回值类型:interval

    示例:

    openGauss=# SELECT justify_days(interval '35 days');justify_days 
    --------------1 mon 5 days
    (1 row)
    
  • justify_hours(interval)

    描述:将时间间隔以天(24小时为一天)为单位。

    返回值类型:interval

    示例:

    openGauss=# SELECT JUSTIFY_HOURS(INTERVAL '27 HOURS');justify_hours  
    ----------------1 day 03:00:00
    (1 row)
    
  • justify_interval(interval)

    描述:结合justify_days和justify_hours,调整interval。

    返回值类型:interval

    示例:

    openGauss=# SELECT JUSTIFY_INTERVAL(INTERVAL '1 MON -1 HOUR');justify_interval 
    ------------------29 days 23:00:00
    (1 row)
    
  • localtime

    描述:当前时间。

    返回值类型:time

    示例:

    openGauss=# SELECT localtime AS RESULT;result
    ----------------16:05:55.664681
    (1 row)
    
  • localtimestamp

    描述:当前日期及时间。

    返回值类型:timestamp

    示例:

    openGauss=# SELECT localtimestamp;timestamp          
    ----------------------------2017-09-01 17:03:30.781902
    (1 row)
    
  • now()

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT now();now              
    -------------------------------2017-09-01 17:03:42.549426+08
    (1 row)
    
  • timenow

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# select timenow();timenow
    ------------------------2020-06-23 20:36:56+08
    (1 row)
    
  • numtodsinterval(num, interval_unit)

    描述:将数字转换为interval类型。num为numeric类型数字,interval_unit为固定格式字符串(‘DAY’ | ‘HOUR’ | ‘MINUTE’ | ‘SECOND’)。

    示例:

    openGauss=# SELECT numtodsinterval(100, 'HOUR');numtodsinterval 
    -----------------100:00:00
    (1 row)openGauss=# SET intervalstyle = a;
    SET
    openGauss=# SELECT numtodsinterval(100, 'HOUR');numtodsinterval
    -------------------------------+000000004 04:00:00.000000000
    (1 row)
    
  • pg_sleep(seconds)

    描述:服务器线程延迟时间,单位为秒。

    返回值类型:void

    示例:

    openGauss=# SELECT pg_sleep(10);pg_sleep 
    ----------(1 row)
    
  • statement_timestamp()

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT statement_timestamp();statement_timestamp      
    -------------------------------2017-09-01 17:04:39.119267+08
    (1 row)
    
  • sysdate

    描述:当前日期及时间。

    返回值类型:timestamp

    示例:

    openGauss=# SELECT sysdate;sysdate       
    ---------------------2017-09-01 17:04:49
    (1 row)
    
  • timeofday()

    描述:当前日期及时间(像clock_timestamp,但是返回时为text)。

    返回值类型:text

    示例:

    openGauss=# SELECT timeofday();timeofday              
    -------------------------------------Fri Sep 01 17:05:01.167506 2017 CST
    (1 row)
    
  • transaction_timestamp()

    描述:当前日期及时间,与current_timestamp等效。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT transaction_timestamp();transaction_timestamp     
    -------------------------------2017-09-01 17:05:13.534454+08
    (1 row)
    
  • add_months(d,n)

    描述:用于计算时间点d再加上n个月的时间。

    返回值类型:timestamp

    示例:

    openGauss=# SELECT add_months(to_date('2017-5-29', 'yyyy-mm-dd'), 11) FROM sys_dummy;add_months      
    ---------------------2018-04-29 00:00:00
    (1 row)
    
  • last_day(d)

    描述:用于计算时间点d当月最后一天的时间。

    返回值类型:timestamp

    示例:

    openGauss=# select last_day(to_date('2017-01-01', 'YYYY-MM-DD')) AS cal_result;cal_result      
    ---------------------2017-01-31 00:00:00
    (1 row)
    
  • next_day(x,y)

    描述:用于计算时间点x开始的下一个星期几(y)的时间。

    返回值类型:timestamp

    示例:

    openGauss=# select next_day(timestamp '2017-05-25 00:00:00','Sunday')AS cal_result;cal_result      
    ---------------------2017-05-28 00:00:00
    (1 row)
    
  • tinterval(abstime, abstime )

    描述:用两个绝对时间创建时间间隔。

    返回值类型:tinterval

    示例:

    openGauss=# call tinterval(abstime 'May 10, 1947 23:59:12', abstime 'Mon May  1 00:30:30 1995');tinterval
    -----------------------------------------------------["1947-05-10 23:59:12+09" "1995-05-01 00:30:30+08"]
    (1 row)
    
  • tintervalend(tinterval)

    描述:返回tinteval的结束时间。

    返回值类型:abstime

    示例:

    openGauss=# select tintervalend('["Sep 4, 1983 23:59:12" "Oct4, 1983 23:59:12"]');tintervalend
    ------------------------1983-10-04 23:59:12+08
    (1 row)
    
  • tintervalrel(tinterval)

    描述:计算并返回tinterval的相对时间。

    返回值类型:reltime

    示例:

    openGauss=# select tintervalrel('["Sep 4, 1983 23:59:12" "Oct4, 1983 23:59:12"]');tintervalrel
    --------------1 mon
    (1 row)
    

23.3 TIMESTAMPDIFF

  • TIMESTAMPDIFF(unit , timestamp_expr1, timestamp_expr2)

timestampdiff函数是计算两个日期时间之间(timestamp_expr2-timestamp_expr1)的差值,并以unit形式返回结果。timestamp_expr1,timestamp_expr2必须是一个timestamp、timestamptz、date类型的值表达式。unit表示的是两个日期差的单位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nokQs9VJ-1690539725499)(https://docs.opengauss.org/zh/docs/5.0.0/docs/BriefTutorial/public_sys-resources/icon-note.gif)] 说明:
该函数仅在openGauss兼容MY类型时(即dbcompatibility = ‘B’)有效,其他类型不支持该函数。

  • year

    年份。

    openGauss=#  SELECT TIMESTAMPDIFF(YEAR, '2018-01-01', '2020-01-01');timestamp_diff
    ----------------2
    (1 row)
    
  • quarter

    季度。

    openGauss=#  SELECT TIMESTAMPDIFF(QUARTER, '2018-01-01', '2020-01-01');timestamp_diff
    ----------------8
    (1 row)
    
  • month

    月份。

    openGauss=#  SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2020-01-01');timestamp_diff
    ----------------24
    (1 row)
    
  • week

    星期。

    openGauss=#  SELECT TIMESTAMPDIFF(WEEK, '2018-01-01', '2020-01-01');timestamp_diff
    ----------------104
    (1 row)
    
  • day

    天。

    openGauss=#  SELECT TIMESTAMPDIFF(DAY, '2018-01-01', '2020-01-01');timestamp_diff
    ----------------730
    (1 row)
    
  • hour

    小时。

    openGauss=#  SELECT TIMESTAMPDIFF(HOUR, '2020-01-01 10:10:10', '2020-01-01 11:11:11');timestamp_diff
    ----------------1
    (1 row)
    
  • minute

    分钟。

    openGauss=#  SELECT TIMESTAMPDIFF(MINUTE, '2020-01-01 10:10:10', '2020-01-01 11:11:11');timestamp_diff
    ----------------61
    (1 row)
    
  • second

    秒。

    openGauss=#  SELECT TIMESTAMPDIFF(SECOND, '2020-01-01 10:10:10', '2020-01-01 11:11:11');timestamp_diff
    ----------------3661
    (1 row)
    
  • microseconds

    秒域(包括小数部分)乘以1,000,000。

    openGauss=#  SELECT TIMESTAMPDIFF(MICROSECOND, '2020-01-01 10:10:10.000000', '2020-01-01 10:10:10.111111');timestamp_diff
    ----------------111111
    (1 row)
    
  • timestamp_expr含有时区

    openGauss=# SELECT TIMESTAMPDIFF(HOUR,'2020-05-01 10:10:10-01','2020-05-01 10:10:10-03');timestamp_diff
    ----------------2
    (1 row)
    

23.4 EXTRACT

  • EXTRACT(field_ _FROM source)

extract函数从日期或时间的数值里抽取子域,比如年、小时等。source必须是一个timestamp、time或interval类型的值表达式(类型为date的表达式转换为timestamp,因此也可以用)。field是一个标识符或者字符串,它指定从源数据中抽取的域。extract函数返回类型为double precision的数值。field的取值范围如下所示。

  • century

    世纪。

    第一个世纪从0001-01-01 00:00:00 AD开始。这个定义适用于所有使用阳历的国家。没有0世纪,直接从公元前1世纪到公元1世纪。

    示例:

    openGauss=# SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13');date_part 
    -----------20
    (1 row)
    
  • day

    • 如果source为timestamp,表示月份里的日期(1-31)。

      openGauss=# SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
      -----------16
      (1 row)
      
    • 如果source为interval,表示天数。

      openGauss=# SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');date_part 
      -----------40
      (1 row)
      
  • decade

    年份除以10。

    openGauss=# SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------200
    (1 row)
    
  • dow

    每周的星期几,星期天(0)到星期六(6)。

    openGauss=# SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------5
    (1 row)
    
  • doy

    一年的第几天(1~365/366)。

    openGauss=# SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------47
    (1 row)
    
  • epoch

    • 如果source为timestamp with time zone,表示自1970-01-01 00:00:00-00 UTC以来的秒数(结果可能是负数);

      如果source为date和timestamp,表示自1970-01-01 00:00:00-00当地时间以来的秒数;

      如果source为interval,表示时间间隔的总秒数。

      openGauss=# SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');date_part   
      --------------982384720.12
      (1 row)
      
      openGauss=# SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');date_part 
      -----------442800
      (1 row)
      
    • 将epoch值转换为时间戳的方法。

      openGauss=# SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second' AS RESULT;result          
      ---------------------------2001-02-17 12:38:40.12+08
      (1 row)
      
  • hour

    小时域(0-23)。

    openGauss=# SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------20
    (1 row)
    
  • isodow

    一周的第几天(1-7)。

    星期一为1,星期天为7。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIRzd3lg-1690539725501)(https://docs.opengauss.org/zh/docs/5.0.0/docs/BriefTutorial/public_sys-resources/icon-note.gif)] 说明: 除了星期天外,都与dow相同。

    openGauss=# SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');date_part 
    -----------7
    (1 row)
    
  • isoyear

    日期中的ISO 8601标准年(不适用于间隔)。

    每个带有星期一开始的周中包含1月4日的ISO年,所以在年初的1月或12月下旬的ISO年可能会不同于阳历的年。详细信息请参见后续的week描述。

    openGauss=# SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-01');date_part 
    -----------2005
    (1 row)
    
    openGauss=# SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-02');date_part 
    -----------2006
    (1 row)
    
  • microseconds

    秒域(包括小数部分)乘以1,000,000。

    openGauss=# SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');date_part 
    -----------28500000
    (1 row)
    
  • millennium

    千年。

    20世纪(19xx年)里面的年份在第二个千年里。第三个千年从2001年1月1日零时开始。

    openGauss=# SELECT EXTRACT(MILLENNIUM FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------3
    (1 row)
    
  • milliseconds

    秒域(包括小数部分)乘以1000。请注意它包括完整的秒。

    openGauss=# SELECT EXTRACT(MILLISECONDS FROM TIME '17:12:28.5');date_part 
    -----------28500
    (1 row)
    
  • minute

    分钟域(0-59)。

    openGauss=# SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------38
    (1 row)
    
  • month

    如果source为timestamp,表示一年里的月份数(1-12)。

    openGauss=# SELECT EXTRACT(MONTH FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------2
    (1 row)
    

    如果source为interval,表示月的数目,然后对12取模(0-11)。

    openGauss=# SELECT EXTRACT(MONTH FROM INTERVAL '2 years 13 months');date_part 
    -----------1
    (1 row)
    
  • quarter

    该天所在的该年的季度(1-4)。

    openGauss=# SELECT EXTRACT(QUARTER FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------1
    (1 row)
    
  • second

    秒域,包括小数部分(0-59)。

    openGauss=# SELECT EXTRACT(SECOND FROM TIME '17:12:28.5');date_part 
    -----------28.5
    (1 row)
    
  • timezone

    与UTC的时区偏移量,单位为秒。正数对应UTC东边的时区,负数对应UTC西边的时区。

  • timezone_hour

    时区偏移量的小时部分。

  • timezone_minute

    时区偏移量的分钟部分。

  • week

    该天在所在的年份里是第几周。ISO 8601定义一年的第一周包含该年的一月四日(ISO-8601 的周从星期一开始)。换句话说,一年的第一个星期四在第一周。

    在ISO定义里,一月的头几天可能是前一年的第52或者第53周,十二月的后几天可能是下一年第一周。比如,2005-01-01是2004年的第53周,而2006-01-01是2005年的第52周,2012-12-31是2013年的第一周。建议isoyear字段和week一起使用以得到一致的结果。

    openGauss=# SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------7
    (1 row)
    
  • year

    年份域。

    openGauss=# SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');date_part 
    -----------2001
    (1 row)
    

23.5 date_part

date_part函数是在传统的Ingres函数的基础上制作的(该函数等效于SQL标准函数extract):

  • date_part(**‘field’, **source)

这里的field参数必须是一个字符串,而不是一个名称。有效的field与extract一样,详细信息请参见EXTRACT。

示例:

openGauss=# SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');date_part 
-----------16
(1 row)
openGauss=# SELECT date_part('hour', INTERVAL '4 hours 3 minutes');date_part 
-----------4
(1 row)

表2显示了可以用于格式化日期和时间值的模版。

表 2 用于日期/时间格式化的模式

类别模式描述
小时HH一天的小时数(01-12)。
HH12一天的小时数(01-12)。
HH24一天的小时数(00-23)。
分钟MI分钟(00-59)。
SS秒(00-59)。
FF微秒(000000-999999)。
SSSSS午夜后的秒(0-86399)。
上、下午AM或A.M.上午标识。
PM或P.M.下午标识。
Y,YYY带逗号的年(4和更多位)。
SYYYY公元前四位年。
YYYY年(4和更多位)。
YYY年的后三位。
YY年的后两位。
Y年的最后一位。
IYYYISO年(4位或更多位)。
IYYISO年的最后三位。
IYISO年的最后两位。
IISO年的最后一位。
RR年的后两位(可在21世纪存储20世纪的年份)。
RRRR可接收4位年或两位年。若是两位,则和RR的返回值相同,若是四位,则和YYYY相同。
BC或B.C.AD或A.D.纪元标识。BC(公元前),AD(公元后)。
MONTH全长大写月份名(空白填充为9字符)。
MON大写缩写月份名(3字符)。
MM月份数(01-12)。
RM罗马数字的月份(I-XII ;I=JAN)(大写)。
DAY全长大写日期名(空白填充为9字符)。
DY缩写大写日期名(3字符)。
DDD一年里的日(001-366)。
DD一个月里的日(01-31)。
D一周里的日(1-7 ;周日是 1)。
W一个月里的周数(1-5)(第一周从该月第一天开始)。
WW一年里的周数(1-53)(第一周从该年的第一天开始)。
IWISO一年里的周数(第一个星期四在第一周里)。
世纪CC世纪(2位)(21 世纪从 2001-01-01 开始)。
儒略日J儒略日(自公元前 4712 年 1 月 1 日来的天数)。
季度Q季度。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XqcjiT6J-1690539725502)(https://docs.opengauss.org/zh/docs/5.0.0/docs/BriefTutorial/public_sys-resources/icon-note.gif)] 说明:
上表中RR计算年的规则如下:

  • 输入的两位年份在00~49之间:
  • 当前年份的后两位在00~49之间,返回值年份的前两位和当前年份的前两位相同。
    • 当前年份的后两位在50~99之间,返回值年份的前两位是当前年份的前两位加1。
  • 输入的两位年份在50~99之间:
  • 当前年份的后两位在00~49之间,返回值年份的前两位是当前年份的前两位减1。
  • 当前年份的后两位在50~99之间,返回值年份的前两位和当前年份的前两位相同。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

图片

相关文章:

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

文章目录 openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符23.1 时间日期操作符23.2 时间/日期函数23.3 TIMESTAMPDIFF23.4 EXTRACT23.5 date_part openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符 23.1 时间日期操作符 用户在使用时…...

C++OpenCV(7):图像形态学基础操作

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 文章目录 膨胀与腐蚀形态学基础 膨胀与腐蚀 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。 膨胀操作是取每个位置领域内最大值&#xff0…...

Appium+python自动化(二十二)- 控件坐标获取(超详解)

简介 有些小伙伴或者是童鞋可能会好奇会问上一篇中的那个monkey脚本里的坐标点是如何获取的,不是自己随便蒙的猜的,或者是自己用目光或者是尺子量出来的吧,答案当然是:NO。获取控件坐标点的方式这里宏哥给小伙伴们分享和讲解三种方…...

Tensorflow benchmark 实操指南

环境搭建篇见环境搭建-CentOS7下Nvidia Docker容器基于TensorFlow1.15测试GPU_东方狱兔的博客-CSDN博客 1. 下载Benchmarks源码 从 TensorFlow 的 Github 仓库上下载 TensorFlow Benchmarks,可以通过以下命令来下载 https://github.com/tensorflow/benchmarks 我…...

【linux】调试工具介绍

文章目录 前言一、kdb二、ftrace三、gdb 前言 在Linux内核调试过程中,可以使用各种工具和技术来诊断和解决问题。以下是一些常用的Linux内核调试方法: printk:printk是Linux内核中的打印函数,可以在代码中插入打印语句来输出调试…...

2.获取DOM元素

获取DOM元素就是利用JS选择页面中的标签元素 2.1 根据CSS选择器来获取DOM元素(重点) 2.1.1选择匹配的第一个元素 语法: document.querySelector( css选择器 )参数: 包含一个或多个有效的CSS选择器 字符串 返回值: CSS选择器匹配的第一个元素,一个HTMLElement对象…...

flask中redirect、url_for、endpoint介绍

flask中redirect、url_for、endpoint介绍 redirect 在 Flask 中,redirect() 是一个非常有用的函数,可以使服务器发送一个HTTP响应,指示客户端(通常是浏览器)自动导航到新的 URL。基本上,它是用来重定向用…...

《MySQL》第十二篇 数据类型

目录 一. 整数类型二. 浮点类型三. 日期和时间类型四. 字符串类型五. 枚举值类型六. 二进制类型七. 小结 MySQL 支持多种数据类型,学习好数据类型,才能更好的学习 MySQL 表的设计,让表的设计更加合理。 一. 整数类型 类型大小SIGNED(有符号)…...

Python与OpenCV环境中,借助SIFT、单应性、KNN以及Ransac技术进行实现的图像拼接算法详细解析及应用

一、引言 在当今数字化时代,图像处理技术的重要性不言而喻。它在无人驾驶、计算机视觉、人脸识别等领域发挥着关键作用。作为图像处理的一个重要部分,图像拼接算法是实现广阔视野图像的重要手段。今天我们将会讲解在Python和OpenCV环境下,如何使用SIFT、单应性、KNN以及Ran…...

苍穹外卖Day01项目日志

1.软件开发流程和人员分工是怎样的? 软件开发流程 一个软件是怎么被开发出来的? 需求分析 先得知道软件定位人群、用户群体、有什么功能、要实现什么效果等。 需要得到需求规格说明书、产品原型。 需求规格说明书 其中前后端工程师要关注的就是产品原…...

Netty学习(二)

文章目录 二. Netty 入门1. 概述1.1 Netty 是什么?1.2 Netty 的作者1.3 Netty 的地位1.4 Netty 的优势 2. Hello World2.1 目标加入依赖 2.2 服务器端2.3 客户端2.4 流程梳理课堂示例服务端客户端 分析提示(重要) 3. 组件3.1 EventLoop事件循…...

ReactRouterv5在BrowserRouter和HashRouter模式下对location.state的支持

结论:HashRouter不支持location.state 文档:ReactRouter v5 从文档可看到history.push()方法支持2个参数:path, [state] state即是location.state,常用于隐式地传递状态参数 但文档未提的是,仅适用于BrowserRouter&am…...

Aerotech系列文章(3)运动设置命令Motion Setup Commands

1.运动设置命令Motion Setup Commands 斜坡类型: 直线,S曲线,与正弦曲线 Enumerator: RAMPTYPE_Linear Linear-based ramp type. RAMPTYPE_Scurve S-curve-based ramp type. RAMPTYPE_Sine Sine-based ramp type. 函数原型&a…...

线性神经网络——softmax 回归随笔【深度学习】【PyTorch】【d2l】

文章目录 3.2、softmax 回归3.2.1、softmax运算3.2.2、交叉熵损失函数3.2.3、PyTorch 从零实现 softmax 回归3.2.4、简单实现 softmax 回归 3.2、softmax 回归 3.2.1、softmax运算 softmax 函数是一种常用的激活函数,用于将实数向量转换为概率分布向量。它在多类别…...

【Nodejs】Node.js开发环境安装

1.版本介绍 在命令窗口中输入 node -v 可以查看版本 0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特性8.x 支持 ES6 特性 2.No…...

梅尔频谱(Mel spectrum)简介及Python实现

梅尔频谱(Mel spectrum)简介及Python实现 1. 梅尔频谱(Mel spectrum)简介2. Python可视化测试3.频谱可视化3.1 Mel 频谱可视化3.2 STFT spectrum参考文献资料1. 梅尔频谱(Mel spectrum)简介 在信号处理上,声信号(噪声信号)是一种重要的传感监测手段。对于语音分类任务…...

【数据结构】实验六:队列

实验六 队列 一、实验目的与要求 1)熟悉C/C语言(或其他编程语言)的集成开发环境; 2)通过本实验加深对队列的理解,熟悉基本操作; 3) 结合具体的问题分析算法时间复杂度。 二、…...

【Linux线程】第一章||理解线程概念+创建一个线程(附代码加讲解)

线程概念 🌵什么是线程🌲线程和进程的关系🎄线程有以下特点:🌳 线程的优点🌴 线程的缺点🌱线程异常🌿线程用途 ☘️手动创建一个进程🍀运行 🌵什么是线程 在L…...

Android进阶之微信扫码登录

遇到新需求要搭建微信扫码登录功能,这篇文章是随着我的编码过程一并写的,希望能够帮助有需求的人和以后再次用到此功能的自己。 首先想到的就是百度各种文章,当然去开发者平台申请AppID和密钥是必不可少的,等注册好发现需要创建应用以及审核(要官网,流程图及其他信息),想着先写…...

macOS Monterey 12.6.8 (21G725) Boot ISO 原版可引导镜像

macOS Monterey 12.6.8 (21G725) Boot ISO 原版可引导镜像 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Lin…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...