当前位置:网站首页>SQL函数 TO_DATE(一)
SQL函数 TO_DATE(一)
2022-08-01 18:02:00 【用户7741497】
SQL函数 TO_DATE(一)
将格式化字符串转换为日期的日期函数。
大纲
TO_DATE(date_string[,format])
TODATE(date_string[,format])参数
date_string- 要转换为日期的字符串。基础数据类型为CHAR或VARCHAR2的字符串日期表达式。format- 可选 — 对应于date_string的日期格式字符串。如果省略格式,DD MON YYYY&是默认值;此默认值是可配置的。
描述
名称 TO_DATE 和 TODATE 是可互换的,并且支持 Oracle 兼容性。
TO_DATE 函数将各种格式的日期字符串转换为日期整数值,数据类型为 DATE。它用于输入各种字符串格式的日期,并将它们存储在标准的内部表示中。 TO_DATE 返回具有以下格式的日期:
nnnnn其中 nnnnn 是介于 0(1840 年 12 月 31 日)和 2980013(9999 年 12 月 31 日)之间的正整数,包括端点。这表示天数。时间值被忽略。 1840 年 12 月 31 日之前的日期可以使用儒略日期来表示,如下所述。
也可以使用 TODATE() 方法调用从 ObjectScript 调用此函数:
$SYSTEM.SQL.Functions.TODATE(date_string,format)在为字段提供默认值时,可以在数据定义中使用 TO_DATE 函数。例如:
CREATE TABLE mytest
(ID NUMBER(12,0) NOT NULL,
End_Year DATE DEFAULT TO_DATE('12-31-2018','MM-DD-YYYY') NOT NULL)相关 SQL 函数
TO_DATE将格式化的日期字符串转换为日期整数。TO_CHAR执行相反的操作;它将日期整数转换为格式化的日期字符串。TO_TIMESTAMP将格式化的日期和时间字符串转换为标准时间戳。CAST和 CONVERT执行DATE` 数据类型转换。
日期字符串
第一个参数指定一个日期字符串文字。可以为输入 date_string 提供任何类型的日期字符串。每个字符都必须对应于格式字符串,但以下情况除外:
- 可以包含或省略前导零(不带分隔符的
date_string除外)。 - 年份可以用两位数或四位数字指定。
- 月份名称可以完整指定,也可以指定为名称的前三个字母。只有前三个字母必须是正确的。月份名称不区分大小写。
- 附加到日期的时间值将被忽略。
格式化
第二个参数将日期格式指定为一串代码字符。
默认日期格式
如果未指定格式,TO_DATE 将使用默认格式解析日期字符串。默认格式为 DD MON YYYY。例如,'22 Feb 2018'。
此默认格式可在系统范围内配置,可使用以下任一方式:
$SYSTEM.SQL.Util.SetOption("ToDateDefaultFormat") Management Portal TO_DATE 默认格式配置选项。从系统管理中,选择配置,然后选择 SQL 和对象设置,然后选择 SQL。可以查看和设置 TO_DATE 默认格式选项。
要确定当前设置,请调用 $SYSTEM.SQL.CurrentSettings(),它会显示 TO_DATE() 默认格式设置。
格式元素
格式是根据以下规则指定的一个或多个格式元素的字符串:
- 格式元素不区分大小写。
- 几乎任何顺序或数量的格式元素都是允许的。
- 格式字符串使用与
date_string中的分隔符匹配的非字母数字分隔符(例如,空格、斜杠或连字符)分隔它们的元素。指定日期分隔符的这种使用不依赖于为您的 NLS 语言环境定义的DateSeparator。 - 以下日期格式字符串不需要分隔符:
MMDDYYYY、DDMMYYYY、YYYYMMDD和YYYYDDMM。还支持不完整的日期格式YYYYMM,并假定DD值为01。请注意,在这些情况下,必须为MM和DD值提供前导零。
下表列出了 format 参数的有效日期格式元素:
Format | Code Meaning |
|---|---|
DD | 两位数的月份日期 (01-31)。不需要前导零,除非格式不包含日期分隔符。 |
MM | 两位数的月份编号(01-12;01 = JAN)。 |
MON | 月份的缩写名称,由当前语言环境中的 MonthAbbr 属性指定。默认情况下,在英文中,这是月份名称的前三个字母。在其他语言环境中,月份缩写可能超过三个字母长和/或可能不包含月份名称的第一个字母。不允许使用句点字符。不区分大小写。 |
MONTH | 月份的全名,由当前语言环境中的 MonthName 属性指定。默认值为: January February March April May June July August September October November December. Not case-sensitive. |
YYYY | 四位数年份。 |
YY | 年份的最后两位数。 2 位数年份的前 2 位数默认为 19。 |
RRRR | 四位数年份。 |
RR | L年份的最后 2 位数字。 |
DDD | 一年中的某一天(见下文)。 |
J | 儒略日期(自公元前 4712 年 1 月 1 日 (BCE) 以来的天数)。 |
TO_DATE 格式还可以包含 D(星期几号)、DY(星期几缩写)或 DAY(星期几名称)元素。但是,这些格式元素未经过验证或用于确定返回值。
单个日期元素的日期格式
可以将 DD、DDD、MM 或 YYYY 指定为完整的日期格式。因为这些格式字符串省略了月份、年份或同时省略了月份和年份, 将它们解释为指的是当前月份和年份:
DD返回当前年份当前月份中指定日期的日期。DDD返回当前年份中指定日期的日期。MM返回当前年份中指定月份的第一天的日期。YYYY- 返回指定年份当前月份第一天的日期。
以下嵌入式 SQL 示例显示了这些格式:
/// d ##class(PHA.TEST.SQLFunction).ToDate()
ClassMethod ToDate()
{
NEW SQLCODE
&sql(
SELECT
TO_DATE('300','DDD'),
TO_DATE('24','DD')
INTO
:a,:b
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w "DDD format: ",a," = ",$ZDATE(a,1,,4),!
w "DD format: ",b," = ",$ZDATE(b,1,,4)
}
}DHC-APP>d ##class(PHA.TEST.SQLFunction).ToDate()
DDD format: 66409 = 10/27/2022
DD format: 66253 = 05/24/2022/// d ##class(PHA.TEST.SQLFunction).ToDate1()
ClassMethod ToDate1()
{
NEW SQLCODE
&sql(
SELECT
TO_DATE('8','MM'),
TO_DATE('2018','YYYY')
INTO
:a,:b
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w "MM format: ",a," = ",$ZDATE(a,1,,4),!
w "YYYY format: ",b," = ",$ZDATE(b,1,,4),!
w "done"
}
}DHC-APP>d ##class(PHA.TEST.SQLFunction).ToDate1()
MM format: 66322 = 08/01/2022
YYYY format: 64769 = 05/01/2018
done两位数年份转换(RR 和 RRRR 格式)
YY 格式通过简单地附加 19 将两位数的年份值转换为四位数字。因此 07 变为 1907,93 变为 1993。
RR 格式提供更灵活的两位数到四位数年份转换。此转换基于当年。如果当前年份在上半世纪(例如,2000 到 2050),则从 00 到 49 的两位数年份扩展到当前世纪的四位数字年份,从 50 到 2 位数年份99 年扩大到上个世纪的四位数年份。如果当前年份在世纪下半叶(例如,2050 年到 2099 年),则所有两位数年份都将扩展为当前世纪中的四位数年份。下面的嵌入式 SQL 示例显示了两位数年份到四位数年份的这种扩展:
/// d ##class(PHA.TEST.SQLFunction).ToDate2()
ClassMethod ToDate2()
{
NEW SQLCODE
&sql(
SELECT
TO_DATE('29 September 00','DD MONTH RR'),
TO_DATE('29 September 18','DD MONTH RR'),
TO_DATE('29 September 49','DD MONTH RR'),
TO_DATE('29 September 50','DD MONTH RR'),
TO_DATE('29 September 77','DD MONTH RR')
INTO
:a,:b,:c,:d,:e
)
if SQLCODE = 0 {
w a," = ",$ZDATE(a,1,,4),!
w b," = ",$ZDATE(b,1,,4),!
w c," = ",$ZDATE(c,1,,4),!
w d," = ",$ZDATE(d,1,,4),!
w e," = ",$ZDATE(e,1,,4)
} else {
w "error:",SQLCODE
}
}DHC-APP>d ##class(PHA.TEST.SQLFunction).ToDate2()
58346 = 09/29/2000
64920 = 09/29/2018
76243 = 09/29/2049
40083 = 09/29/1950
49945 = 09/29/1977RRRR 格式允许输入两位数和四位数字的混合年份。四位数年份不变(与 YYYY相同)。使用 RR 格式算法将两位数年份转换为四位数年份。这显示在以下嵌入式 SQL 示例中:
/// d ##class(PHA.TEST.SQLFunction).ToDate3()
ClassMethod ToDate3()
{
n SQLCODE
&sql(
SELECT
TO_DATE('29 September 2018','DD MONTH RRRR'),
TO_DATE('29 September 18','DD MONTH RRRR'),
TO_DATE('29 September 1949','DD MONTH RRRR'),
TO_DATE('29 September 49','DD MONTH RRRR'),
TO_DATE('29 September 1950','DD MONTH RRRR'),
TO_DATE('29 September 50','DD MONTH RRRR')
INTO
:a,:b,:c,:d,:e,:f
)
if SQLCODE = 0 {
w a," 4-digit = ",$ZDATE(a,1,,4),!
w b," 2-digit = ",$ZDATE(b,1,,4),!
w c," 4-digit = ",$ZDATE(c,1,,4),!
w d," 2-digit = ",$ZDATE(d,1,,4),!
w e," 4-digit = ",$ZDATE(e,1,,4),!
w f," 2-digit = ",$ZDATE(f,1,,4)
} else {
w "error:",SQLCODE
}
}DHC-APP>d ##class(PHA.TEST.SQLFunction).ToDate3()
64920 4-digit = 09/29/2018
64920 2-digit = 09/29/2018
39718 4-digit = 09/29/1949
76243 2-digit = 09/29/2049
40083 4-digit = 09/29/1950
40083 2-digit = 09/29/1950边栏推荐
猜你喜欢

What is the JVM runtime data area and the JMM memory model

计算IoU(D2L)

2022年MySQL最新面试题

Leetcode71. Simplified Paths

程序员架构修炼之道:如何设计“易理解”的系统架构?

How to build a CMDB driven by consumption scenarios?

QT基础功能,信号、槽

存储日报-数据湖架构权威指南(使用 Iceberg 和 MinIO)

MySQL 45 Talk | 09 How to choose common index and unique index?

统信软件、龙芯中科等四家企业共同发布《数字办公安全创新方案》
随机推荐
C语言理论--笔试面试基础稳固
以消费场景为驱动的CMDB要怎么建?
SQL的索引详细介绍
RecSys'22|CARCA: Cross-Attention-Aware Context and Attribute Recommendations
What is the JVM runtime data area and the JMM memory model
QT basic functions, signals, slots
TCP million concurrent server optimization parameters
指针和解引用
使用设备树时对应的驱动编程
Basic image processing in opencv
Xingtu has been short of disruptive products?Will this M38T from the Qingdao factory be a breakthrough?
C language theory--a solid foundation for the written test and interview
史上最全的Redis基础+进阶项目实战总结笔记
BITS Pilani|SAC-AP:基于 Soft Actor Critic 的深度强化学习用于警报优先级
ACID Characteristics and Implementation Methods of MySQL Relational Database Transactions
B001 - Intelligent ecological fish tank based on STM32
B001 - 基于STM32的智能生态鱼缸
广汽埃安“弹匣电池”,四大核心技术,出行安全保障
晶振工作原理详解
gtk显示4通道rgba图像