【问题标题】:sql select where something happen that daysql选择那天发生的事情
【发布时间】:2014-08-27 13:16:12
【问题描述】:

我有栏目:

code     unique          date                     info      name
a123     adfgh           2014-07-14 14:15:00      test      user1
a124     aklgp           2014-08-12 09:15:00      test      user1
a175     opllp           2014-08-12 11:15:00      test      user2

我想获取所有唯一 = $variable 但在那天的记录。 示例: 如果我的独特 = 'aklgp' 我想同时看到

a124     aklgp           2014-08-12 09:15:00      test      user1
a175     opllp           2014-08-12 11:15:00      test      user2

因为两条记录都在同一天?有可能吗?

我用 DATEDIFF 玩,但这对我不利

【问题讨论】:

  • 如果没有找到唯一的你还需要日记录怎么办?
  • 唯一 100% 存在。但如果不存在比我不需要

标签: php sql sql-server


【解决方案1】:

不确定这是否足够,但想法可能是这样的。

cast([date] as date)

将占用您的日期时间的“日期”部分(希望这是一个日期时间类型),这会给您...一天。

select * 
from yourTable
where cast([date] as date) IN (select cast([date] as date)
                               from yourTable
                               where [unique] = 'aklgp')

当然,如果你在不同的日子有很多aklgp,你会得到更多的数据。但独特的应该是......独特的,不是吗?

SqlFiddle

编辑

正如 Bulat 所说,您也可以使用 EXISTS

SELECT * from yourTable t1
where exists (select null
              from yourTable t2
              where cast(t1.date as date) = cast(t2.date as date)
              and t2.[unique] = 'aklgp')

【讨论】:

  • 是的。但是我需要在制作当前记录时获取所有记录
  • @user3747585 在更新的答案中看到 sqlFiddle 吗?这就是你会得到的。
  • 是的。非常感谢
  • @Bulat 当然,这是另一种方式(而且可能更有效),我更新了答案;)
【解决方案2】:

也许这对你也有帮助,

DECLARE @UNIQUE VARCHAR(20) 
SET @UNIQUE = 'AKLGP'

SELECT  * FROM [TABLE] 
WHERE   CAST([DATE] AS DATE) = (SELECT CAST([DATE] AS DATE) FROM [TABLE] WHERE [UNIQUE] = @UNIQUE )

【讨论】:

    【解决方案3】:

    我不知道只使用 SQL 的解决方案。也许 PHP 中的解决方案可以提供一些帮助:

    $query = "SELECT * FROM yourTable WHERE unique = 'aklgp'";
    $result = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_row($result);
    
    $year = date_format($row['date'], 'Y');
    $month = date_format($row['date'], 'm');
    $day = date_format($row['date'], 'd');
    
    $query = "SELECT * FROM yourTable 
    WHERE  (DATEPART(yy, date) = $year
    AND    DATEPART(mm, date) = $month
    AND    DATEPART(dd, date) = $day)";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 2011-04-20
      • 2015-11-16
      • 1970-01-01
      • 2016-10-19
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多