📜  日期时间mysql中的日期(1)

📅  最后修改于: 2023-12-03 15:26:18.430000             🧑  作者: Mango

MySQL中的日期

在MySQL中,日期和时间是常用的数据类型之一。它们用于存储日期和时间信息,并支持许多常用的日期和时间操作。

MySQL中的日期类型

MySQL支持四种日期类型:

  • DATE: 用于存储日期值(例如1980-12-31)。
  • TIME: 用于存储时间值(例如23:59:59)。
  • DATETIME: 用于存储日期和时间值(例如1980-12-31 23:59:59)。
  • TIMESTAMP: 与DATETIME类似,但是具有不同的存储方式(请参见下文)。

为了更好的理解,我们来看一个例子:

CREATE TABLE example (
  id INT(11) NOT NULL AUTO_INCREMENT,
  mydate DATE,
  mytime TIME,
  mydatetime DATETIME,
  mytimestamp TIMESTAMP,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在上面的例子中,我们创建了一个名为“example”的表,在该表中,我们定义了4个不同的列,分别用于存储日期、时间、日期和时间以及时间戳信息。

存储日期和时间值

存储日期和时间值的方式与其他数据类型相似。我们可以使用INSERT语句插入日期和时间值:

INSERT INTO example (mydate, mytime, mydatetime, mytimestamp) VALUES
('2021-01-01', '12:30:45', '2021-01-01 12:30:45', NOW());

在上面的例子中,我们为mydatemytimemydatetimemytimestamp列插入了不同的值。其中,NOW()函数用于获取当前日期和时间值。

显示日期和时间值

要显示日期和时间值,我们可以使用SELECT语句:

SELECT * FROM example;

该语句将显示所有行和列的值。在结果中,日期和时间值将以MySQL日期和时间格式显示。

操作日期和时间值

MySQL支持许多日期和时间操作。下面是一些常用的操作:

  • DATE_FORMAT(date, format): 格式化日期值。
  • DATEDIFF(date1, date2): 计算两个日期之间的天数差异。
  • ADDDATE(date, INTERVAL value unit): 将时间间隔添加到日期值。
  • SUBDATE(date, INTERVAL value unit): 从日期值中减去时间间隔。
  • DATE_ADD(date, INTERVAL expr unit): 将表达式中的时间间隔添加到日期值。
  • DATE_SUB(date, INTERVAL expr unit): 将表达式中的时间间隔从日期值中减去。

下面是一个使用这些操作的例子:

SELECT
  mydate,
  DATE_FORMAT(mydate, '%Y-%m-%d') AS formatted_date,
  DATEDIFF(NOW(), mydate) AS days_since,
  ADDDATE(mydate, INTERVAL 1 DAY) AS tomorrow,
  SUBDATE(mydate, INTERVAL 1 YEAR) AS last_year,
  DATE_ADD(mydate, INTERVAL 1 MONTH) AS next_month,
  DATE_SUB(mydate, INTERVAL 2 WEEK) AS two_weeks_ago
FROM example

在上面的例子中,我们使用DATE_FORMAT函数将日期值格式化为字符串,并使用DATEDIFF函数计算自日期以来的天数。我们还演示了如何使用ADDDATESUBDATEDATE_ADDDATE_SUB函数来操作日期值。

TIMESTAMP类型

TIMESTAMP类型与DATETIME类型类似,但具有不同的存储方式。TIMESTAMP类型在内部以UTC格式存储,但在查询结果中使用当前时区显示。此外,TIMESTAMP类型占用的存储空间更少(4字节),因此在某些情况下可以节省空间。

请注意,如果更改服务器时区,则必须将现有的TIMESTAMP值转换为新时区。否则,查询结果中的时间值将是错误的。转换方法如下:

SELECT CONVERT_TZ(mytimestamp, 'UTC', 'Asia/Shanghai') AS local_timestamp FROM example;

在上面的例子中,我们使用CONVERT_TZ函数将mytimestamp列中存储的UTC时间戳转换为东八区本地时间。

总结

MySQL中的日期和时间类型对于许多应用程序都是至关重要的。了解如何存储、显示和操作日期和时间值可以帮助您更好地管理数据。