【问题标题】:Simple SQL Server SELECT Not Working With Date简单的 SQL Server SELECT 不使用日期
【发布时间】:2015-12-15 21:18:11
【问题描述】:

我有一个简单的表,其中包含我关心的 3 列

  • TargetUnits(真实)
  • TargetDate(日期时间)
  • 产品ID(整数)

当我运行以下SELECT 时,我在 1015 年 12 月 10 日获得了许多日期时间。这很好用,我得到了下面的结果

SELECT 
    [TargetDate], [TargetUnits] 
FROM 
    [TaktBoards].[dbo].[TargetPlot] 
WHERE 
    [ProductID] = 2 
    AND [TargetDate] > '2015-12-10 00:00:00'  
ORDER BY 
    [TargetDate] DESC

输出:

TargetDate  TargetUnits
--------------------------------
2015-12-10 23:45:00.000 50
2015-12-10 23:30:00.000 49.15254
2015-12-10 23:15:00.000 48.30508
2015-12-10 23:00:00.000 47.45763
2015-12-10 22:45:00.000 46.61017
2015-12-10 22:30:00.000 45.76271
2015-12-10 22:15:00.000 44.91525
2015-12-10 22:00:00.000 44.91525
2015-12-10 21:45:00.000 44.06779
2015-12-10 21:30:00.000 43.22034
2015-12-10 21:15:00.000 42.37288
2015-12-10 21:00:00.000 41.52542
2015-12-10 20:45:00.000 40.67797
2015-12-10 20:30:00.000 39.83051
2015-12-10 20:15:00.000 38.98305
2015-12-10 20:00:00.000 38.98305
2015-12-10 19:45:00.000 38.13559
2015-12-10 19:30:00.000 37.28814
2015-12-10 19:15:00.000 36.44068
2015-12-10 19:00:00.000 35.59322
2015-12-10 18:45:00.000 34.74576
2015-12-10 18:30:00.000 33.8983
2015-12-10 18:15:00.000 33.05085
2015-12-10 18:00:00.000 32.20339
2015-12-10 17:45:00.000 32.20339
2015-12-10 17:30:00.000 32.20339
2015-12-10 17:15:00.000 31.35593
2015-12-10 17:00:00.000 30.50847
2015-12-10 16:45:00.000 30.50847
2015-12-10 16:30:00.000 29.66102
2015-12-10 16:15:00.000 28.81356
2015-12-10 16:00:00.000 27.9661
2015-12-10 15:45:00.000 27.11864
2015-12-10 15:30:00.000 26.27119
2015-12-10 15:15:00.000 25.42373
2015-12-10 15:00:00.000 24.57627
2015-12-10 14:45:00.000 23.72881
2015-12-10 14:30:00.000 22.88136
2015-12-10 14:15:00.000 22.0339
2015-12-10 14:00:00.000 22.0339
2015-12-10 13:45:00.000 21.18644
2015-12-10 13:30:00.000 20.33898
2015-12-10 13:15:00.000 19.49153
2015-12-10 13:00:00.000 18.64407
2015-12-10 12:45:00.000 17.79661
2015-12-10 12:30:00.000 16.94915
2015-12-10 12:15:00.000 16.94915
2015-12-10 12:00:00.000 16.94915
2015-12-10 11:45:00.000 16.10169
2015-12-10 11:30:00.000 15.25424
2015-12-10 11:15:00.000 14.40678
2015-12-10 11:00:00.000 13.55932
2015-12-10 10:45:00.000 12.71186
2015-12-10 10:30:00.000 11.86441
2015-12-10 10:15:00.000 11.01695
2015-12-10 10:00:00.000 10.16949
2015-12-10 09:45:00.000 9.322034
2015-12-10 09:30:00.000 8.474576
2015-12-10 09:15:00.000 7.627119
2015-12-10 09:00:00.000 7.627119
2015-12-10 08:45:00.000 7.627119
2015-12-10 08:30:00.000 6.779661
2015-12-10 08:15:00.000 5.932203
2015-12-10 08:00:00.000 5.084746
2015-12-10 07:45:00.000 4.237288
2015-12-10 07:30:00.000 3.389831
2015-12-10 07:15:00.000 2.542373
2015-12-10 07:00:00.000 1.694915
2015-12-10 06:45:00.000 0.8474576
2015-12-10 06:30:00.000 0

但是,当我运行此 SELECT(只需添加 [TargetDate] < '2015-12-10 03:56:00')时,我没有得到任何结果。

SELECT 
    [TargetDate], [TargetUnits] 
FROM 
    [TaktBoards].[dbo].[TargetPlot] 
WHERE 
    [ProductID] = 2 
    AND [TargetDate] > '2015-12-10 00:00:00' 
    AND [TargetDate] < '2015-12-10 03:56:00' 
ORDER BY 
    [TargetDate] DESC

我做错了什么?我想获取 12 月 10 日下午 3:56 以内的所有记录。请帮忙。 :)

安迪

【问题讨论】:

    标签: datetime select sql-server-2012


    【解决方案1】:
    [TargetDate] < '2015-12-10 03:56:00
    

    当你的最小记录是
    2015-12-10 06:30:00.000 0
    这比你的指挥官大。也许你的意思是

    [TargetDate] > '2015-12-10 03:56:00
    

    【讨论】:

    • 天啊!!就是这样。 ol' 12 与 24 小时制时钟。 :) 非常感谢您指出这一点。我完全错过了。我需要 15:56 而不是 3:56。
    【解决方案2】:

    下午 3 点应表示为 15:00。您的数据(如果仅此而已)在 0 到 03:00 范围内没有任何内容

    【讨论】:

      【解决方案3】:

      你似乎想要这个:

      TargetDate < '2015-12-10 15:56:00' -- 24-hour clock
      

      另一种选择是使用允许您指定am/pm 的文字格式。

      https://msdn.microsoft.com/en-us/library/ms187819.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多