原文: https://www.freecodecamp.org/news/sql-convert-the-date-to-string-or-datetime-function/

当你在使用 SQL 时,你需要学习如何正确格式化日期。

这是因为日期是任何 SQL 和其他软件相关活动的一个重要方面。例如,你需要能够使用日期来为条目添加时间戳,并跟踪事情发生的时间。几乎所有的事情都与一个日期相关联。

在这篇文章中,我想告诉你如何用 CONVERT()STR_TO_DATE() 函数在 SQL 中把日期和日期时间转换为字符串。

我们将讨论的内容

  • 如何用 CONVERT() 函数将日期转换为字符串
  • 如何用 STR_TO_DATE() 函数将日期转换为字符串
  • 如何用 DATE_FORMAT() 改变时间格式
  • 小结

如何用 CONVERT() 函数将日期转换为字符串

CONVERT() 函数有两个参数:

  • 日期 - 必须是一个字符串,或者使用内置的日期获取函数,如 NOW()SYSDATE()
  • 数据类型 - 你想将日期转换成的数据类型

下面是 CONVERT() 函数的用法:

SELECT CONVERT(NOW(), CHAR);
ss1

上面的查询使用 NOW() 函数来获取当前的日期和时间。第二个参数是 CHAR,是日期被转换为的数据类型。

如果你愿意,也可以使用 SYSDATE() 来代替它:

SELECT CONVERT(SYSDATE(), CHAR);
ss2

还有许多其他的函数可以用来处理日期问题。如果你想阅读更多内容,我在本教程中写过它们。

你不仅可以用函数作为 CONVERT() 函数的第一个参数。你可以使用一个写成字符串的日期,然后指定 DATE 作为你要转换的数据类型:

SELECT CONVERT("2023-01-10", DATE)
ss3

如何用 STR_TO_DATE() 函数将日期转换成字符串

STR_TO_DATE() 函数是另一个转换日期或日期时间的有用函数。它接受两个参数:

  • 日期 - 它必须是一个字符串,例如,“09-01-2023”。
  • 格式 - 你希望日期被转换为的格式,例如,mm-dd-yyyy。你可以像这样指定格式:%d-%m-%Y

下面是 STR_TO_DATE() 函数的用法:

SELECT STR_TO_DATE('09-01-2023', '%d-%m-%Y')
ss4

你也可以用斜线(/)来分隔日期和格式:

SELECT STR_TO_DATE('09/01/2023', '%d/%m/%Y')

注意:如果你没有为日期和格式使用相同的分隔符,你会得到返回值为 null。

ss5

如果你输入的日期是第 N 天,你必须将格式中的 d 改为大写字母:

SELECT STR_TO_DATE('9th-01-2023', '%D-%m-%Y')
ss6

而如果你将月份写成缩写,你必须将格式中的 m 改为大写字母:

SELECT STR_TO_DATE('9th-JAN-2023', '%D-%M-%Y')
ss7

接下来,我们将看看如何用 DATE_FORMAT() 函数来处理日期格式。

如何使用 DATE_FORMAT() 改变时间格式

如果你想将月份写成全称,就把格式中的 m 改为大写字母,并使用 DATE_FORMAT() 函数:

SELECT DATE_FORMAT('2023-01-09', '%d-%M-%y')
ss8

如果你想将日期写成第几天,就把格式中的 d 改为大写字母:

SELECT DATE_FORMAT('2023-01-09', '%D-%M-%y')
ss9

如果你想写年份的全称,就把 y 改成大写字母:

SELECT DATE_FORMAT('2023-01-09', '%D-%M-%Y')
ss10

小结

这篇文章向你展示了如何用 CONVERT()STR_TO_DATE() 函数将日期转换为字符串。我们还研究了如何用 DATE_FORMAT() 函数来改变日期格式。

如果你觉得这篇文章对你有帮助,请不要犹豫,与你在社交媒体上的朋友分享它。