第四十四章 SQL函数 DATENAME

2024-01-15 11:20

本文主要是介绍第四十四章 SQL函数 DATENAME,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 第四十四章 SQL函数 DATENAME
  • 参数
  • 描述
  • Datepart 参数
  • 日期表达格式
  • 范围和值检查
  • 示例

第四十四章 SQL函数 DATENAME

日期/时间函数,它返回一个字符串,表示日期/时间表达式中指定部分的值。

参数

  • datepart - 要返回的日期/时间信息类型。
    日期或时间部分的名称(或缩写)。
    可以用大写或小写指定该名称,也可以不加引号。
    可以将datepart指定为文字或主机变量。
  • date-expression - 要返回datepart值的日期、时间或时间戳表达式。
    日期表达式必须包含datepart类型的值。

描述

DATENAME函数返回日期/时间值中指定部分的名称(例如“June”)。
结果作为数据类型VARCHAR(20)返回。
如果结果是数字(例如“23”表示当天),它仍然作为VARCHAR(20)字符串返回。
要以整数形式返回此信息,请使用DATEPART
要返回包含多个日期部分的字符串,请使用TO_DATE

请注意,DATENAME是为Sybase和Microsoft SQL Server兼容性而提供的。

这个函数也可以通过调用DATENAME()方法从ObjectScript调用:

$SYSTEM.SQL.Functions.DATENAME(datepart,date-expression)

Datepart 参数

datepart参数可以是包含一个(且仅包含一个)以下日期/时间组件的字符串,可以是全名(date Part列),也可以是缩写(缩写列)。
这些datepart组件名称和缩写不区分大小写。

Date PartAbbreviationsReturn Values
yearyyyy, yy0001-9999
quarterqq, q1-4
monthmmJanuary,…December
weekwk, ww1-53
weekdaydwSunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
dayofyeardy, y1-366
daydd, d1-31
hourhh0-23
minutemi, n0-59
secondss, s0-59
millisecondms0-999 (with precision of 3)
microsecondmcs0–999999 (with precision of 6)
nanosecondns0–999999999 (with precision of 9)

如果将无效的datepart值指定为文字,则会发出SQLCODE -8错误码。
但是,如果提供一个无效的datepart值作为主机变量,则不会发出SQLCODE错误,并且DATENAME函数返回一个NULL值。

上表显示了不同日期部分的默认返回值。
通过使用带有不同时间和日期选项的SET OPTION命令,可以修改其中几个日期部分的返回值。

week:可以配置为使默认算法或ISO 8601标准算法确定给定日期的年度星期。

weekday:对于weekday的默认设置是将周日指定为一周的第一天(工作日=1)。
但是,可以将一周的第一天配置为另一个值,或者可以应用指定星期一为一周的第一天的ISO 8601标准。

millisecond:返回一个包含毫秒数(千分之一秒)的字符串。
如果日期表达式的精度超过3个小数位数,将其截断为3个数字,并将该数字作为字符串返回。
如果日期表达式具有指定的精度,但精度小于3个小数位数,则 0将其填充为3个数字,并将该数字作为字符串返回。
微秒和纳秒执行类似的截断和填充零。

可以将datepart指定为带引号的字符串或不带引号的字符串。
这些语法变体执行的操作略有不同:

  • 引号:DATENAME('month','2018-02-25'):在创建缓存查询时,datepart被视为一个字面值。
    SQL执行文字替换。
    这将产生一个更普遍的可重用的缓存查询。
  • 没有引号:DATENAME(month,'2018-02-25'):在创建缓存查询时,datepart被视为关键字。
    没有文字替换。
    这将产生一个更具体的缓存查询。

日期表达格式

date-expression参数可以是以下任何一种格式:

  • %Date logical value (+$H)

  • %PosixTime (%Library.PosixTime) logical value (an encoded 64-bit signed integer)

  • %TimeStamp (%Library.TimeStamp) logical value (YYYY-MM-DD HH:MM:SS.FFF), also known as ODBC format.

  • %String (or compatible) value
    %String(或compatible)值可以是以下任何格式:

  • 99999,99999 ($H format)

  • Sybase/SQL-Server-date Sybase/SQL-Server-time

  • Sybase/SQL-Server-time Sybase/SQL-Server-date

  • Sybase/SQL-Server-date (default time is 00:00:00)

  • Sybase/SQL-Server-time (default date is 01/01/1900)

Sybase/SQL-Server-date是以下五种格式之一:

mmdelimiterdddelimiter[yy]yy dd Mmm[mm][,][yy]yy dd [yy]yy Mmm[mm] yyyy Mmm[mm] dd yyyy [dd] Mmm[mm]

其中分隔符是斜杠(/)、连字符(-)或句号(.)。

Sybase/SQL-Server-time表示以下三种格式之一:

HH:MM[:SS:SSS][{AM|PM}] HH:MM[:SS.S] HH['']{AM|PM}

如果date-expression指定了时间格式但没有指定日期格式,则DATENAME的默认值为1900-01-01,其中weekday的值为Monday

范围和值检查

DATENAME对输入值执行以下检查。
如果一个值检查失败,则返回null字符串。

  • 有效的日期表达式可以由日期字符串(yyyy-mm-dd)、时间字符串(hh:mm:ss)或日期和时间字符串(yyyy-mm-dd hh:mm:ss)组成。
    如果同时指定日期和时间,则日期和时间都必须有效。
    例如,如果没有指定时间字符串,则可以返回Year值,但如果指定了无效的时间字符串,则无法返回Year值。
  • 日期字符串必须完整,格式正确,包含适当数量的元素和每个元素的数字,以及适当的分隔符。
    例如,如果省略了Day值,则不能返回Year值。
    年必须指定为四位数字。
  • 时间字符串必须使用适当的分隔符进行适当的格式化。
    因为时间值可以为零,所以可以省略一个或多个时间元素(保留或省略分隔符),这些元素将返回值为零。
    因此,“hh: mm: ss”,“hh: mm:”“hh: mm”,“hh:: ss”,“hh::”“hh”,和“::”都是有效的。
    若要省略Hour元素,date-expression必须没有字符串的日期部分,并且必须保留至少一个分隔符(:)。
  • 日期和时间值必须在有效范围内。
    年龄:0001到9999。
    月份:1 - 12个月。
    天数:1 - 31天。
    小时:0到23。
    分钟:0到59分钟。
    秒:0 ~ 59。
  • 一个月中的天数必须与月和年相匹配。
    例如,日期“02-29”仅在指定的年份为闰年时有效。
  • 大多数小于10的日期和时间值可能包括或省略前导零。
    但是,小于10的Hour值必须包括前导0,如果它是datetime字符串的一部分。
    不允许使用其他非规范整数值。
    因此,Day值为“07”“7”是有效的,但“007”“7.0”“7a”无效。
  • 如果date-expression指定了时间格式但没有指定日期格式,则DATENAME不会对时间组件值执行范围验证。

示例

在下面的例子中,每个DATENAME返回'Wednesday',因为它是指定日期的星期几('dw'):


SELECT DATENAME('dw','2018-02-21') AS DayName,DATENAME(dw,'02/21/2018') AS DayName,DATENAME('DW',64700) AS DayNameWednesday	Wednesday	Wednesday

下面的例子返回’December',因为它是指定日期的月份名称('mm'):

SELECT DATENAME('mm','2018-12-20 12:00:00') AS MonthNameDecember

下面的示例返回'2018'(字符串形式),因为它是指定日期的年份('yy'):

SELECT DATENAME('yy','2018-12-20 12:00:00') AS Year2018

注意,上面的例子使用了日期部分的缩写。
但是,你可以指定全名,如下例所示:

SELECT DATENAME('Q',$HOROLOG) AS Q,DATENAME('WK',$HOROLOG) AS WkCnt,DATENAME('DY',$HOROLOG) AS DayCnt1	6	35

下面的嵌入式SQL示例将datepartdate-expression作为宿主变量传入:

ClassMethod DateName()
{s a="year"s b=$HOROLOG&sql(SELECT DATENAME(:a,:b) INTO :c)w "this year is: ",c
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).DateName()
this year is: 2022

下面的示例使用子查询从出生日期为星期三的Sample.Person返回记录:

SELECT Name AS WednesdaysChild,DOB
FROM (SELECT Name,DOB,DATENAME('dw',DOB) AS Wkday FROM Sample.Person)
WHERE Wkday='Wednesday'
ORDER BY DOB

在这里插入图片描述

这篇关于第四十四章 SQL函数 DATENAME的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/608719

相关文章

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种