【发布时间】:2016-02-23 11:50:57
【问题描述】:
我想用 Oracle 转换日期,格式如下:
25/01/2016 (DD/MM/YYYY)
转成这种格式:
2016-01-25 (YYYY-MM-DD)
这是所需的请求(来自this earlier question):
WITH bounds AS (
SELECT to_char(to_date('01/01/2016','DD/MM/YYYY'), 'YYYY-MM-DD') AS lower_bound,
to_char(to_date('29/02/2016','DD/MM/YYYY'), 'YYYY-MM-DD') AS upper_bound
FROM DUAL
),
weeks AS (
SELECT LEVEL AS id,
lower_bound + (LEVEL - 1) * 7 AS week_date
FROM bounds
CONNECT BY lower_bound + (LEVEL - 1) * 7 <= upper_bound
)
SELECT 'W' || TO_CHAR( week_date, 'WW' ) AS week
FROM weeks;
这行得通:
to_date(to_char(to_date('".$dateDebut."','DD/MM/YYYY'), 'YYYY-MM-DD'), 'YYYY-MM-DD')
【问题讨论】:
-
当前是 DATE 还是字符串值?您现在如何查询/查看它?如果是日期,您是否依赖 NLS 设置对其进行格式化?
-
我想这是一个字符串值
-
您应该只需要
to_date('".$dateDebut."','DD/MM/YYYY')- 将字符串转换为数据后,您无需再将日期转换为不同格式的字符串,然后再次转换为日期。跨度> -
顺便说一句 - 我在链接的问题中使用了
DATE '2016-02-06',因为这是 ANSI 日期文字的格式(即直接创建日期而不是指定字符串并将其转换为日期)。如果您有其他格式的日期,则不需要使用此格式。