【问题标题】:SQL Select Date between Error conversion failedSQL Select Date between Error conversion failed
【发布时间】:2018-12-31 14:06:38
【问题描述】:

我有一列数据类型为date

当我运行以下语句时:

select count(*) as dt from dbo.logs where dateLogged>= '2018-02-01' and dateLogged < ='2018-02-30';

我收到Conversion failed when converting date and/or time from character string.

【问题讨论】:

  • 从2月份有30天开始?
  • 您是否尝试在查询中使用 between?!
  • @松鼠天哪!!!!!!我该如何选择你的答案?
  • 不能,这是一条评论。不用担心。
  • 非常感谢@Squirrel!!!

标签: sql sql-server database sql-server-2008


【解决方案1】:
select count(*) as dt from dbo.logs where CAST(dateLogged as date) >= '2018-02-01' and CAST(dateLogged as date) < ='2018-02-30'; 
OR
select count(*) as dt from dbo.logs where CAST(dateLogged as date) BETWEEN '2018-02-01' and '2018-02-30'; 

【讨论】:

  • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案2】:

“2018-02-30”不是有效日期。将其替换为有效日期并尝试以下查询:

select count(*) as dt from dbo.logs 
where cast(dateLogged as date) 
between '2018-02-01' and '2018-02-28';

【讨论】:

    【解决方案3】:

    试试这个:->

    设置日期格式 dmy

    选择 count(*) 作为 dt 来自 dbo.logs 其中 dateLogged>= '01-02-2018' 和 dateLogged

    【讨论】:

      【解决方案4】:

      请尝试将 dateLogged 列转换为日期,您有两种选择

      Cast(dateLogged  as datetime)
      

      Convert(varchar(30),'7/7/2011',102)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多