Sql 如何在oracle中获取当月第一个日期到当前日期
有人能告诉我如何获取当月第一个日期到当月当前日期的列表吗?假设我想获取2015年5月第一个日期到2015年5月17日Sql 如何在oracle中获取当月第一个日期到当前日期,sql,oracle,date,Sql,Oracle,Date,有人能告诉我如何获取当月第一个日期到当月当前日期的列表吗?假设我想获取2015年5月第一个日期到2015年5月17日 格式应如下所示:ddmmyyyy您可以通过level伪列进行连接,并通过将其与当前月份和年份关联来格式化此结果: SELECT TO_CHAR(LEVEL, '09') || TO_CHAR(SYSDATE, 'mmyyyy') FROM dual CONNECT BY LEVEL < TO_NUMBER(TO_CHAR(SYSDATE, 'dd'))
格式应如下所示:ddmmyyyy您可以通过
level
伪列进行连接,并通过将其与当前月份和年份关联来格式化此结果:
SELECT TO_CHAR(LEVEL, '09') || TO_CHAR(SYSDATE, 'mmyyyy')
FROM dual
CONNECT BY LEVEL < TO_NUMBER(TO_CHAR(SYSDATE, 'dd'))
要获取从开始到当前日期的月份天数,请执行以下操作:
查询1:
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM SYSDATE )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM SYSDATE )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
查询2:
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM SYSDATE )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM SYSDATE )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
要获取当月的所有日期,请执行以下操作:
SELECT TO_CHAR(LEVEL, '09') || TO_CHAR(SYSDATE, 'mmyyyy')
FROM dual
CONNECT BY LEVEL < TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'dd'))
查询3:
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM SYSDATE )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM SYSDATE )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
查询4:
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM SYSDATE )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM SYSDATE )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 15 2015 00:00:00 |
| May, 16 2015 00:00:00 |
| May, 17 2015 00:00:00 |
SELECT TRUNC( SYSDATE, 'MM' ) + LEVEL - 1 AS DATE_OF_CURRENT_MONTH
FROM DUAL
CONNECT BY LEVEL <= EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
WITH CTE( DATE_OF_CURRENT_MONTH, Lvl ) AS
(
SELECT TRUNC( SYSDATE, 'MM' ), 1
FROM DUAL
UNION ALL
SELECT TRUNC( SYSDATE, 'MM' ) + Lvl, Lvl + 1
FROM CTE
WHERE Lvl < EXTRACT( DAY FROM LAST_DAY( SYSDATE ) )
)
SELECT DATE_OF_CURRENT_MONTH FROM CTE
| DATE_OF_CURRENT_MONTH |
|-----------------------|
| May, 01 2015 00:00:00 |
| May, 02 2015 00:00:00 |
| May, 03 2015 00:00:00 |
| May, 04 2015 00:00:00 |
| . |
| . |
| . |
| May, 29 2015 00:00:00 |
| May, 30 2015 00:00:00 |
| May, 31 2015 00:00:00 |
不知道你说的“列表”是什么意思。请详细说明一下好吗?列表意味着结果将显示从第一个日期到当前日期的日期,并横向显示年份和月份,例如日期-月份-年份01-05-2015 02-05-2015。。。截至2015年5月17日谢谢您的快速回复。我将在明天的工作中试用,并告知您是否有效。:)我刚刚在SQL fiddle上运行了查询,我准确地得到了我需要的。如果我想看到当月的更多日期,我该怎么办?我是指5月17日之后的日期。谢谢。@Iftekhar您可以在<代码>连接方式<代码>克劳塞默雷尼克中更改条件,我如何更改?非常感谢您的帮助。@Iftekhar的确切要求是什么?显示五月的所有日子?