SQL调整以查询选择特定时间

时间:2013-10-28 19:01:09

标签: sql sql-server-2008

我在下面有以下查询来从数据库中选择点。我需要做一点调整,我只想要'2013-09'的积分。我试过简单地添加AND“Time”LIKE'2013-09%',但这似乎不起作用,因为它产生0记录。我也知道数据库包含今年匹配的记录,因为我使用了下面的查询(删除了时间选择部分)来选择所有记录。可能是什么问题?

; WITH positions AS (
  SELECT MMSI
       , Message_ID
       , "Time"
       , Latitude
       , Longitude
  FROM   dbo.DecodedCSVMessages_Staging
  WHERE  Message_ID IN (1, 3)
  AND    Latitude  > 45
  AND    Latitude  < 85
  AND    Longitude < -50
  AND    Longitude > -141
  AND "Time" LIKE '2013-09%' <- this is where I'd put it
)
, details AS (
  SELECT MMSI
       , Ship_Type
       , Vessel_Name
       , IMO
       , Row_Number() OVER (PARTITION BY MMSI ORDER BY "Time" DESC) As row_num
  FROM   dbo.DecodedCSVMessages_Staging
  WHERE  Message_ID = 5
)
SELECT positions.MMSI
     , positions.Message_ID
     , positions."Time"
     , details.Ship_Type
     , details.Vessel_Name
     , details.IMO
     , positions.Latitude
     , positions.Longitude
FROM   positions
 INNER
  JOIN details
    ON details.MMSI    = positions.MMSI

2 个答案:

答案 0 :(得分:0)

没有理由使用LIKE,请将此行更改为:

AND [Time] > '2013-09-01'

答案 1 :(得分:0)

如果您只想要2013年9月的价值,可以试试这个:

AND "Time" >= '2013-09-01'
AND "Time" < '2013-10-01'