在 SQL(PostgreSQL 数据库)中将 YYYY-MM-DD 转换为文本(例如:2016 年 7 月 17 日)

Converting a YYYY-MM-DD to text (ex: July, 17, 2016) in SQL (PostgreSQL database)

SELECT date, percent FROM errorpercent WHERE percent > 1;

   date    |        percent         
2016-07-17 | 2.26268624680272595600

我希望将 2016-07-17(以及可能的许多其他行)转换为 2016 年 7 月 17 日的格式。

如果您使用的是 Oracle DBMS,则更简单的方法是使用 to_Char 函数,例如,此查询将是:

select to_char(date,'Month DD, YYYY') as new_date,
       percent 
  FROM errorpercent 
 WHERE percent > 1;

几乎所有数据库都有自己的日期格式化功能。

See the many questions tagged , , , to learn more. You can also search Whosebug for:<your database> date format

下面你会找到其他4个最常用的SQL数据库的解决方案(除了Oracle 已经回答):

IBM DB2

.. 然后你可以使用 VARCHAR_FORMAT 标量函数。 这适用于 LUW (Linux/Unix/Windows) 以及 iSeries(以前称为 AS400)系统。 您的 SQL 查询将如下所示:

SELECT
  VARCHAR_FORMAT(date,'Month DD, YYYY') as formatted_date
, percent  
FROM
  errorpercent
WHERE
  percent > 1

另请参阅:

MySQL

.. 然后你可以使用 DATE_FORMAT 标量函数。 您的 SQL 查询将如下所示:

SELECT
  DATE_FORMAT(date, '%M %D, %Y') as formatted_date
, percent  
FROM
  errorpercent
WHERE
  percent > 1

另请参阅:

微软SQL服务器

.. 然后你可以使用 CONVERT 标量函数。 您的 SQL 查询将如下所示:

SELECT
  CONVERT(VARCHAR, date, 107) as formatted_date
, percent  
FROM
  errorpercent
WHERE
  percent > 1

另请参阅:

PostgreSQL

.. 然后你可以使用 TO_CHAR 标量函数。 您的 SQL 查询将如下所示:

SELECT
  TO_CHAR(date, 'Month DD, YYYY') as formatted_date
, percent  
FROM
  errorpercent
WHERE
  percent > 1

另请参阅:

如果列的数据类型是日期,那么:

SELECT to_char(date, 'Month, DD, YYYY' ), percent FROM errorpercent WHERE percent > 1;

如果是字符串则:

SELECT to_char(to_date(date, 'YYYY-MM-DD'), 'Month, DD, YYYY' ), percent FROM errorpercent WHERE percent > 1;