【问题标题】:Display dates from two fields显示来自两个字段的日期
【发布时间】:2012-08-16 10:21:02
【问题描述】:

我有一个包含两列 startdateenddate 的表格(DATETIME 类型)。当我传递开始日期和结束日期这两个参数时,我需要从两列中显示两个日期之间的所有日期。

即我有这张桌子:

 startdate  enddate
 ---------------------
 6/1/2012   6/7/2012
 6/5/2012   6/9/2012
 6/10/2012  6/15/2012

当我传递6/3/20126/20/2012 这样的两个日期时,我想显示这个结果集:

  6/5/2012
  6/7/2012
  6/9/2012
  6/10/2012
  6/15/2012

提前致谢

【问题讨论】:

  • startdateenddate 是什么数据类型?您使用的是哪个版本的 SQL Server?
  • 数据类型是日期时间,我使用的是 sqlserver 2008

标签: sql sql-server-2008 tsql date


【解决方案1】:

UNIONSubQuery 中的所有日期。试试吧,

SELECT allDates
FROM
(
    SELECT startdate as allDates
    FROM table
    UNION
    SELECT endDate as allDates
    FROM table
) a
WHERE allDates BETWEEN '6/3/2012' AND '6/20/2012'

【讨论】:

    【解决方案2】:

    MySql 示例语法:

    CREATE TABLE TEST(STARTDATE DATE,ENDDATE DATE);
    
    INSERT INTO TEST VALUES (NOW(), NOW());
    INSERT INTO TEST VALUES ('2012-08-19', '2012-08-15');
    INSERT INTO TEST VALUES ('2012-08-17', '2012-08-10');
    INSERT INTO TEST VALUES ('2012-08-23', '2012-08-21');
    
    SELECT STARTDATE FROM TEST WHERE STARTDATE BETWEEN '2012-08-15' AND '2012-08-23' 
    UNION SELECT ENDDATE FROM TEST WHERE ENDDATE BETWEEN '2012-08-15' AND '2012-08-23' 
    ORDER BY STARTDATE;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 2019-06-01
      • 2022-01-23
      • 2019-01-18
      • 1970-01-01
      • 2021-05-28
      相关资源
      最近更新 更多