Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在oracle中获取当月第一个日期到当前日期_Sql_Oracle_Date - Fatal编程技术网

Sql 如何在oracle中获取当月第一个日期到当前日期

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'))

有人能告诉我如何获取当月第一个日期到当月当前日期的列表吗?假设我想获取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'))

要获取从开始到当前日期的月份天数,请执行以下操作:

查询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的确切要求是什么?显示五月的所有日子?