SQL 日期和时间

SQL 日期和时间

通常,时间使用三个值表示:小时、分钟和秒。我们可以以不同的格式存储时间。

  • HH:MM:SS (小时:分钟:秒)

  • 它以12小时制(AM/PM)存储和显示时间,例如:10:00 AM/10:00 PM。

  • 它(时间)也可以以24小时制存储和显示时间;24小时制从00:00(午夜)到23:59运行。

日期也使用三个值表示:日期、月份和年份。日期有很多可能的变体,全部取决于几个不一致的因素。

  • DD/MM/YYYY格式,例如 – 06/02/2023
  • MM/DD/YYYY格式,例如 – 02/06/2023
  • DD-MM-YYYY格式,例如 – 02-06-2023

SQL中的日期和时间

SQL中的日期和时间函数用于有效处理日期和时间数据。在使用数据库时,应该匹配日期和时间函数的格式,以便将数据插入表中。

SQL Server中提供了几个不同的日期和时间函数。包括它们的目的是确保日期和时间模块在创建和使用数据库时可用。

日期和时间数据类型

日期和时间数据类型用于存储同时包含日期和时间的值。下表列出了不同的日期和时间数据类型。

序号 数据类型及描述 存储
1 datetime 它存储从1753年1月1日到9999年12月31日的日期和时间,精度为3.33毫秒。 8字节
2 datetime2 它存储从0001年1月1日到9999年12月31日的日期和时间,精度为100纳秒。 6 – 8字节
3 smalldatetime 它存储从1900年1月1日到2079年6月6日的日期和时间,精度为1分钟。 4字节
4 date 它只存储日期,从0001年1月1日到9999年12月31日 3字节
5 time 它只存储时间,精度为100纳秒。 3 – 5字节
6 datetimeoffset 它与datetime2相同,但添加了时区偏移。 8 – 10字节
7 timestamp 它存储每次创建或修改行时更新的唯一编号。它不对应实际时间,而是基于内部时间。每个表只能有一个timestamp变量。

SQL中的日期和时间格式

SQL服务器默认以特定格式存储日期、smalldatetime、timestamp和年份值。以下是SQL服务器中使用的日期和时间格式:

  • DATE – YYYY-MM-DD
  • DATETIME – YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME – YYYY-MM-DD HH:MI:SS
  • TIMESTAMP – 一个唯一的数字

向表中插入日期和时间值

要向表中插入日期和时间值,请按照以下步骤进行:

  • 首先,您必须创建一个接受日期和时间值的表。
  • 其次,您必须将数据插入到接受日期和时间数据类型的新创建的表中。

示例

在下面的示例中,我们尝试使用以下查询创建一个仅接受日期和时间数据类型的表。

CREATE TABLE customers_details(orderDate DATE, shippingDate DATETIME, deliveredDate TIMESTAMP, time TIME);

验证

在创建完表格之后,我们可以使用这个查询来检查它的细节:”EXEC sp_help ‘dbo.customers_details'” 在SQL中。

+----------------+-----------+----------+--------+------+-------+----------+
| Column_name    |  Type     | Computed | Length | Prec | Scale | Nullable |
+----------------+-----------+----------+--------+------+-------+----------+
|  orderDate     | date      |  no      | 3      |  10  | 0     | Yes      |
|  shippingDate  | datetime  |  no      | 8      |      |       | Yes      |
|  deliveredDate | timestamp |  no      | 8      |      |       | No       |
|  time          | time      |  no      | 5      |  16  | 7     | Yes      |  
+----------------+-----------+----------+--------+------+-------+----------+

将表中所有与日期和时间相关的列的值传递,我们可以使用以下查询-

INSERT INTO customers_details VALUES('2023-02-01', '2023-02-01 :10:00','2023-02-03 :18:00', '18:00');

日期和时间的操作

在这个事件中,我们正在执行函数并显示其结果,其中包含日期和时间。

GETDATE()函数

GETDATE()函数返回datetime数据类型,并通常用于获取当前日期,如下面的SQL查询中所示。GETDATE()函数返回当前日期和时间。

SELECT GETDATE() AS 'current datetime';

验证

当我们执行上述的SQL查询时,我们得到如下的当前日期和时间。

+-------------------------+
| current datetime        |
+-------------------------+
| 2023-02-06 14:10:49.860 |
+-------------------------+

当前时间戳

current_timestamp用于获取当前时间戳,并返回与GETDATE()函数相同的日期和时间。它的数据类型也是日期和时间。如下所示的SQL查询中,CURRENT_TIMESTAMP通常返回当前时间以及当前日期 –

SELECT CURRENT_TIMESTAMP AS 'CURRENTTIMESTAMP';

输出

执行以上SQL查询时,我们得到的当前日期和时间如下:

+-------------------------+
| CURRENTTIMESTAMP        |
+-------------------------+
| 2023-02-06 14:31:53.520 |
+-------------------------+

SYSDATETIME() 函数

SYSDATETIME() 函数也用于获取 SQL 服务器实例所在系统的当前时间。与 GETDATE() 函数相比,它具有更高的小数秒精度。以下是 SYSDATETIME() 函数的 SQL 查询语句。

SELECT SYSDATETIME() AS 'Current Time and Date';

输出

当我们运行上面的SQL查询时,我们得到以下输出结果:

+-----------------------------+
| Current Time and Date       |
+-----------------------------+
| 2023-02-06 14:57:28.5419381 |
+-----------------------------+

CONVERT() 函数

我们使用 CONVERT 函数来提取时间,其中使用了 GETDATE() 或 CURRENT_TIMESTAMP 函数来从当前日期中分离出时间部分(来自于 SYSDATE),正如我们可以在下面的 SQL 查询中看到的那样。

SELECT CONVERT(VARCHAR(8), GETDATE(), 108) AS 'HH:MM:SS';

验证

当我们运行上述的SQL查询时,我们只能得到以“HH:MM:SS”显示的时间,因为我们使用的是108。108是一个只显示时间的格式,以“HH:MM:SS”格式显示时间。

+----------+
| HH:MM:SS |
+----------+
| 15:23:19 |
+----------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程