SQL Cast as Date:定义和应用

导航到

这篇文章是 SQL “cast as date” 函数的指南。该函数是做什么的,以及为什么您应该关心使用它?

在处理数据库时,时间和日期操作是日常任务。有趣的是——或者可能并不那么有趣——您不会总是找到以正确的日期格式表示的日期。在这种情况下,您必须转换或转换为日期格式,而这正是本文的全部内容。

我们将首先解释如果您想遵循本指南,需要满足哪些先决条件。然后,我们将概述 SQL 中 CAST 函数。您将了解 SQL “cast as date” 术语的含义、函数的工作原理及其语法的详细信息。

之后,您将了解该函数的常见用例。最后,我们将向您展示如何使用该函数的更多详细信息。

先决条件

要继续阅读本文,您必须满足两个先决条件

事不宜迟,让我们开始吧。

SQL 中的“Cast as Date”是什么意思?

SQL 中“cast as date” 到底是什么意思?嗯,转换是一种操作,通过这种操作,您可以获取给定数据类型的值并将其转换为不同的类型。(这不仅在关系数据库的上下文中是正确的,而且在一般的编程中也是如此。)毫不奇怪,您希望转换的值需要与目标类型兼容。例如,如果您想将一段文本转换为日期,则文本必须符合有效的数据格式。

在 SQL 中,CAST 是一个函数。您可以将值转换为不同的类型,与日期和时间相关的类型也不例外。 CAST 函数的语法非常简单

CAST ( expression AS data_type [ ( length ) ] )

快速解释

  • expression 是您想要转换的值
  • data_type 指的是您想要将表达式转换为的类型
  • length 是可选的,指的是目标类型的长度

现在您已经熟悉了这些术语,让我们继续了解它们为何重要。使用该函数背后的动机是什么?这就是我们接下来要看到的。

SQL “Cast as Date” 主要用例

将值转换为日期有几个有趣的用例。考虑到这一点,我在这里非常笼统地使用“cast as date”来表示将值转换为 date 或其他相关类型的任何操作。正如您很快将看到的,CAST 函数有一个替代方案,以下一些用例使用了该替代方案

  • 日期格式化: 可以转换或转换值,以便格式化日期为所需的显示格式,甚至在解析文本格式的日期时指定给定的格式。

  • 日期比较: 可以使用 CAST 函数将值转换为日期,然后执行比较

  • 提取日期的组成部分: 您通常会有一个包含日期和时间的值,但您只想要其中一个。可以将该值转换为仅包含所需组成部分的新值。

使用 SQL “Cast as Date”

在了解了基础知识之后,现在让我们逐步引导您了解如何在实践中使用 SQL CAST 函数。我们将以问答形式进行,提出常见用法场景作为问题,然后回答它们。

如何将字符串转换为日期?

SQL “cast as date” 操作最常见的用法场景可能是想要将字符串转换为日期格式。让我们首先介绍如何将包含ISO 8601 格式日期的简单字符串转换为 date 类型

SELECT CAST('2023-09-25' AS date) AS MyDate

这是结果

MyDate
2023-09-25

看起来可能没什么。毕竟,这完全相同的值。但是您必须理解,函数返回的值是 date 类型,这意味着您可以在日期计算中使用它。假设您想将结果日期加 10 天。以下是您的操作方法

SELECT DATEADD(Day, 10, CAST('2023-09-25' AS date)) AS MyDate

如何在 SQL 中转换今天的日期

在 SQL Server 中,如果您想检索当前日期,则必须使用名为 GETDATE() 的函数

SELECT GETDATE() AS Now

如果您继续运行上面的查询,您将看到它不仅返回当前日期,还返回时间。发生这种情况是因为该函数的返回值是 datetime 类型,其中包含日期和时间两个组成部分。如果您只想要日期怎么办?如果是这种情况,您可以轻松地将结果值转换为 date

SELECT CAST(GETDATE() AS date) AS Today

现在,假设您只想要时间组成部分。在这种情况下,您可以将结果值转换为 time

SELECT CAST(GETDATE() AS time) AS Now

如何在不同的格式中将字符串转换为日期?

当然,我们人类无法就正确的日期格式达成一致,从而导致无数竞争格式。您通常需要将字符串转换为 datetimedatetime 值,但字符串中的日期不符合 ISO 8601 格式。您如何解决这个问题?

幸运的是,SQL Server 以 CONVERT 函数的形式提供了解决方案。让我们看一个例子

SELECT CONVERT(datetime, '25/09/2023', 103) AS MyDate

该函数看起来并不难理解——唯一神秘的部分是末尾的 103。让我们逐个介绍它的参数

  • datetime: 这是转换的目标类型。

  • ‘25/09/2023’: 这是我们希望以 dd/mm/yyyy 格式转换的日期。

  • 103: 这是用于确定转换格式的样式。

要查看所有可用样式的列表,您可以参考微软的文档

cast-function

SQL 中 “Cast as Date” 和 “Convert Date” 之间有什么区别?

您可能想知道:SQL “cast as date” 和 CONVERT 函数之间有什么区别?毕竟,它们不是做同样的事情吗?

正如您刚刚看到的,功能上存在差异。但是,版本之间最显着的区别是 CAST 函数属于 ANSI SQL 规范,而 CONVERT 是 SQL Server 特有的。

总结

正如您所看到的,SQL “cast as date” 只是指在 SQL 中使用 CAST 函数将值转换为针对处理日期进行优化的日期类型。此操作有许多有用的应用程序:通过将值转换为 datetimedatetime 类型,您可以在它们上执行有用的操作,例如时间算术。

转换也可用于格式化目的,甚至从值中提取特定组件,例如仅从 datetime 值中获取时间。

正如您所看到的,CAST 函数具有简单的语法,并且使用起来非常直观。它也有些限制——当您发现自己处于稍微更高级的场景中时,您可能需要改用 CONVERT 函数。

其他资源