【问题标题】:Error Code : 1064 while trying to retrieve values between timestamps错误代码:1064 尝试检索时间戳之间的值
【发布时间】:2016-03-07 15:40:16
【问题描述】:

在我的表中,我有条目 (带有日期时间数据类型),例如:

我需要特定 UNIX 时间戳之间的结果。当我运行查询时:

Select ifnull(ji.JobID,'') as JobID, ifnull(ji.ReelIndex,'') as ReelIndex, ifnull(ji.FileName,'') as FileName, 
 ifnull(ji.MediaType,'') as MediaType, ifnull(ji.QCStatus,'') as QCStatus, ifnull(ji.QCComments,'') as QCComments, 
 ifnull(ji.PackagingStatus,'') as PackagingStatus, ci.Name 
from job_info as ji 
left join content_info as ci on 
 ji.ContainerID = ci.ID 
where ji.Progress = 100 
where ji.ProcessStartTime >= 1449081000 
  and ji.ProcessEndTime <= 1450549800 
order by Name asc, ReelIndex asc 
LIMIT 0 , 20

它会抛出一个错误:

错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的 在 'where ji.ProcessStartTime >= 1449081000 和 ji.ProcessEndTime

这可能是什么原因?

【问题讨论】:

    标签: mysql sql datetime unix-timestamp


    【解决方案1】:

    你有双重 WHERE 使用 AND/OR 代替:

    SELECT ifnull(ji.JobID,'') AS JobID,
           ifnull(ji.ReelIndex,'') AS ReelIndex,
           ifnull(ji.FileName,'') AS FileName,
           ifnull(ji.MediaType,'') AS MediaType,
           ifnull(ji.QCStatus,'') AS QCStatus,
           ifnull(ji.QCComments,'') AS QCComments,
           ifnull(ji.PackagingStatus,'') AS PackagingStatus,
           ci.Name
    FROM job_info AS ji
    LEFT JOIN content_info AS ci 
      ON ji.ContainerID = ci.ID
    WHERE ji.Progress = 100 
      AND ji.ProcessStartTime >= FROM_UNIXTIME(1449081000)     -- here 
      AND ji.ProcessEndTime <= FROM_UNIXTIME(1450549800)
    ORDER BY Name ASC, ReelIndex ASC 
    LIMIT 0, 20;
    

    编辑:

    如果要跳过时间部分并将其设置为00:00:00 CASTDATE

    ...
    AND CAST(ji.ProcessStartTime AS DATE) >= FROM_UNIXTIME(1449081000)     
    AND CAST(ji.ProcessEndTime AS DATE) <= FROM_UNIXTIME(1450549800)
    

    另请注意,您需要使用FROM_UNIXTIME 将 unix_timestamp 转换为 datetime。

    【讨论】:

    • 有没有办法在查询数据库时只考虑日期而不考虑时间? 1449081000 对应于2015-12-031450549800 对应于2015-12-20。但数据库也有时间。所以上面的查询总是会返回一个空集。
    • @SuhailGupta 查看已更新。 1449081000 -> December, 02 2015 18:30:00 所以它也有时间部分
    • 美丽。但我想补充一点,我必须使用 from_unixtime(1449081000) 才能看到结果!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多