了解Oracle SQL日期格式简单
您一定经常发现在查询中处理日期格式很有挑战性,特别是当时间部分与日期结合在一起时。处理日期最困难的部分是确保要插入到表中的日期格式与数据库中日期列的格式匹配。
你知道这个关于SQL Server日期的有趣事实吗?
SQL Server仅支持从1753年1月1日起开始和之后的那些日期。这是逻辑之后的逻辑是英语世界在1753年开始使用Gregorian日历,然后使用朱利安日历。它可能非常具有挑战性地将日期转换为Gregorian日历。因此,DateTime数据类型仅用于1753年1月1日之后的日期。如果要查看日期函数及其语法,则浏览本文在6天内学习SQL是要参考的课程之一。
不同服务器中的数据类型
MySQL服务器:
以下数据类型用于存储数据库中的日期或日期/时间值:
- 日期 - 格式yyyy-mm-dd
- DATETIME -格式为“YYYY-MM-DD HH:MM:SS”
- 时间戳 - 格式:yyyy-mm-dd hh:mm:ss
- 年 - 格式yyyy或yy
SQL Server:
SQL server提供以下数据类型,用于在数据库中存储日期或日期/时间值:
- 日期 - 格式yyyy-mm-dd
- DATETIME -格式为“YYYY-MM-DD HH:MM:SS”
- SMALLDATETIME -格式:YYYY-MM-DD HH:MM:SS
- 时间戳——格式:唯一的数字
Oracle服务器:
Oracle同时支持date和time两种实体,Oracle只使用date两种实体,而不是date和time两种实体。日期类型以特殊的内部格式存储,不仅包括月、日和年,还包括小时、分钟和秒。
Oracle默认的日期格式是“DD-MON-YY”。
Oracle数据库和PL/SQL提供了一组日期和时间数据类型,以标准的内部格式存储日期和时间信息:
- DATE:该数据类型存储一个日期和一个时间,解析为秒。它不包括时区。
- 时间(s):这描述了特定日期的时间,几秒钟精度S,使用HH:mm:ss [.sf]的字段小时,分钟和第二个,其中f是第二值的分数部分。如果未指定秒精度,则假定S的默认值。
- 时间戳:时间戳与日期类似,但有两个关键特性:(1)可以存储和操作解析到最接近十亿分之一秒的时间(精确到小数点后9位),(2)可以将时区与时间戳关联起来。它使用年、月、日、时、分和秒来描述日期和时间,格式为YYYY-MM-DD HH:MM:SS[。其中F是第二个值的小数部分。如果没有指定秒精度,s默认为6。
- INTERVAL: INTERVAL记录并计算两个时间段的持续时间或差值。您可以指定以年、月、日、秒为单位的时间间隔,例如“4年”、“60天”或“9分55秒”。
有效的间隔有两种:
- “一年”,包含一个或两个领域年和月份。
- “日间”,包含一个或多个来自设定日,小时,分钟和第二个字段的连续字段。
SQL Server日期函数
以下是SQL Server中的一些重要内置日期函数以及它们的描述:
功能 |
描述 |
获取当前日期() | 返回当前日期和时间 |
DATENAME () | 返回表示指定日期的指定日期部分的字符串。 |
DATEPART () | 返回一个表示指定日期的指定日期的整数。 |
返回() | 通过向指定日期的指定日期添加间隔来返回新的DateTime值。 |
Dationiff() | 返回两个日期之间的时间 |
将() | 以不同格式显示日期/时间数据 |
在SQL中使用日期
SQL Server论坛中的常见问题解答是如何将DateTime值或列格式化为特定的日期格式。这是一个解释转换函数,用于:
- 将一种数据类型的表达式转换为另一种数据类型。
- 以不同的格式显示日期/时间数据。
句法:
转换(data_type(长度)、表达、风格)
在那里,
- data_type(长度)指定目标数据类型(具有可选长度)
- expression要转换的值
- 样式指定日期/时间的输出格式
以下是样式值的一些示例:
价值 (世纪yy) |
价值 (Century Yyyy) |
输入/输出 | 标准 |
- - - - - - | 0或100 | 星期一日期yyyy hh:miAM(或PM) | 默认 |
1 | 101. | mm / dd / yy | 美国 |
2 | 102. | yy.mm.dd. | ANSI. |
3. | 103. | DD / mm / yy | 英国/法国人 |
转换功能的示例
以下脚本使用Convert()函数来显示不同的格式。我们将使用getDate()函数获取当前日期/时间:
- (转换为VARCHAR(19),获取当前日期())
- 转换(varchar(10),getdate(),10)
- (转换为VARCHAR(10),获取当前日期(),110)
- 转换(varchar(11),getdate(),6)
- 转换(VARCHAR(11),获取当前日期(),106)
- (转换为VARCHAR(24),获取当前日期(),113)
结果看起来像这样:
- 2012年11月08日12:45 PM
- 11-08-12
- 11-08-2012
- 08年11月12日
- 2012年11月8日
- 08 11月2012 12:45:34
如何向前推进?
你不必停止学习日期和时间格式。您可以进一步研究SQL查询,并将自己培养成一名成功的程序员实用的SQL技能。你可以从进修课程开始面向初学者的SQL数据库并继续前进到更具挑战性和先进的课程,包括高需求的课程,如Oracle SQL 11G - 提前。