Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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中使用lag函数来显示日期<;系统日期_Sql_Oracle - Fatal编程技术网

如何在sql中使用lag函数来显示日期<;系统日期

如何在sql中使用lag函数来显示日期<;系统日期,sql,oracle,Sql,Oracle,如果我想使用滞后条件显示dual中小于sysdate的所有日期,我该怎么做 从项中选择sysdate如何在此查询中使用滞后 我的输出应使用滞后条件显示小于sysdate的所有日期 Date 30-jun-2015 29-june-2015 28-june-2015 etc查询1-选择从开始日期到今天的日期: SELECT TRUNC(SYSDATE) - LEVEL + 1 AS "Date" FROM DUAL CONNECT BY TRUNC(SYSDATE) - LEVEL + 1

如果我想使用滞后条件显示dual中小于sysdate的所有日期,我该怎么做

从项中选择sysdate如何在此查询中使用滞后

我的输出应使用滞后条件显示小于sysdate的所有日期

Date
30-jun-2015
29-june-2015
28-june-2015

etc

查询1-选择从开始日期到今天的日期

SELECT TRUNC(SYSDATE) - LEVEL + 1 AS "Date"
FROM   DUAL
CONNECT BY TRUNC(SYSDATE) - LEVEL + 1 >= DATE '2015-06-26'
|                   Date |
|------------------------|
| July, 01 2015 00:00:00 |
| June, 31 2015 00:00:00 |
| June, 30 2015 00:00:00 |
| June, 29 2015 00:00:00 |
| June, 28 2015 00:00:00 |
| June, 27 2015 00:00:00 |
| June, 26 2015 00:00:00 |
WITH ranges ( start_date, end_date ) AS (
  SELECT DATE '2015-06-02', DATE '2015-06-07' FROM DUAL
  UNION ALL
  SELECT DATE '2015-06-12', DATE '2015-06-14' FROM DUAL
)
SELECT START_DATE + COLUMN_VALUE AS "Date"
FROM   ranges,
       TABLE( CAST ( MULTISET(
         SELECT LEVEL - 1
         FROM   DUAL
         CONNECT BY START_DATE + LEVEL - 1 <= END_DATE
       ) AS SYS.ODCINUMBERLIST ) )
|                   Date |
|------------------------|
| June, 02 2015 00:00:00 |
| June, 03 2015 00:00:00 |
| June, 04 2015 00:00:00 |
| June, 05 2015 00:00:00 |
| June, 06 2015 00:00:00 |
| June, 07 2015 00:00:00 |
| June, 12 2015 00:00:00 |
| June, 13 2015 00:00:00 |
| June, 14 2015 00:00:00 |
结果

SELECT TRUNC(SYSDATE) - LEVEL + 1 AS "Date"
FROM   DUAL
CONNECT BY TRUNC(SYSDATE) - LEVEL + 1 >= DATE '2015-06-26'
|                   Date |
|------------------------|
| July, 01 2015 00:00:00 |
| June, 31 2015 00:00:00 |
| June, 30 2015 00:00:00 |
| June, 29 2015 00:00:00 |
| June, 28 2015 00:00:00 |
| June, 27 2015 00:00:00 |
| June, 26 2015 00:00:00 |
WITH ranges ( start_date, end_date ) AS (
  SELECT DATE '2015-06-02', DATE '2015-06-07' FROM DUAL
  UNION ALL
  SELECT DATE '2015-06-12', DATE '2015-06-14' FROM DUAL
)
SELECT START_DATE + COLUMN_VALUE AS "Date"
FROM   ranges,
       TABLE( CAST ( MULTISET(
         SELECT LEVEL - 1
         FROM   DUAL
         CONNECT BY START_DATE + LEVEL - 1 <= END_DATE
       ) AS SYS.ODCINUMBERLIST ) )
|                   Date |
|------------------------|
| June, 02 2015 00:00:00 |
| June, 03 2015 00:00:00 |
| June, 04 2015 00:00:00 |
| June, 05 2015 00:00:00 |
| June, 06 2015 00:00:00 |
| June, 07 2015 00:00:00 |
| June, 12 2015 00:00:00 |
| June, 13 2015 00:00:00 |
| June, 14 2015 00:00:00 |
查询2-在多个范围之间选择日期

SELECT TRUNC(SYSDATE) - LEVEL + 1 AS "Date"
FROM   DUAL
CONNECT BY TRUNC(SYSDATE) - LEVEL + 1 >= DATE '2015-06-26'
|                   Date |
|------------------------|
| July, 01 2015 00:00:00 |
| June, 31 2015 00:00:00 |
| June, 30 2015 00:00:00 |
| June, 29 2015 00:00:00 |
| June, 28 2015 00:00:00 |
| June, 27 2015 00:00:00 |
| June, 26 2015 00:00:00 |
WITH ranges ( start_date, end_date ) AS (
  SELECT DATE '2015-06-02', DATE '2015-06-07' FROM DUAL
  UNION ALL
  SELECT DATE '2015-06-12', DATE '2015-06-14' FROM DUAL
)
SELECT START_DATE + COLUMN_VALUE AS "Date"
FROM   ranges,
       TABLE( CAST ( MULTISET(
         SELECT LEVEL - 1
         FROM   DUAL
         CONNECT BY START_DATE + LEVEL - 1 <= END_DATE
       ) AS SYS.ODCINUMBERLIST ) )
|                   Date |
|------------------------|
| June, 02 2015 00:00:00 |
| June, 03 2015 00:00:00 |
| June, 04 2015 00:00:00 |
| June, 05 2015 00:00:00 |
| June, 06 2015 00:00:00 |
| June, 07 2015 00:00:00 |
| June, 12 2015 00:00:00 |
| June, 13 2015 00:00:00 |
| June, 14 2015 00:00:00 |

dual
只有一行,因此
lag()
没有真正意义。请编辑您的问题并提供示例数据和所需结果。也许您的意思是希望生成一个日期列表,从今天开始,返回X天?在这种情况下,您将使用connectby。例如,
通过级别@Gayathri从双连接中选择trunc(sysdate)-级别dt。你的问题还不清楚。有很多日期小于
sydate