【问题标题】:MSSQL datetime Field No getting Between ResultMSSQL 日期时间字段在结果之间没有得到
【发布时间】:2016-03-03 09:10:24
【问题描述】:

我正在开发一个具有 PHP + MSSQL 的博客 Web 应用程序。

博客表 ...

  • Pk_blog_id
  • // 整数 PK
  • 博客标题
  • // 字符串
  • 博客内容
  • // 文本
  • Created_at
  • // 日期时间

    我想从带有月份的表中收集数据。

    我的查询是。

    $first_day= date('Y-m-01', $month);   // Getting First day of Month
    $last_day = date('Y-m-t', $month);   // Getting Last Day of Month
    
    $sql = "SELECT 
        Pk_blog_id,
        Blog_title,
        Blog_content,
        Created_at 
        FROM dbo.tb_IEAG_Blogs 
        WHERE Is_archived = 0 
        AND Created_at >= CONVERT(datetime,'$first_day') 
        AND Created_at < CONVERT(datetime,'$last_day') 
        ORDER BY tb_IEAG_Blogs.Pk_blog_id DESC";
    

    我没有得到预期的结果...

    当回显时,查询如下...

    SELECT 
     Pk_blog_id,
     Blog_title,
     Blog_content,
     Created_at 
     FROM dbo.tb_IEAG_Blogs 
     WHERE Is_archived = 0 
     AND Created_at >= CONVERT(datetime,'2016-02-01') 
     AND Created_at < CONVERT(datetime,'2016-02-28') 
     ORDER BY tb_IEAG_Blogs.Pk_blog_id DESC 
    

    这可能是 MSSQL 中的 BETWEEN 吗?

    谢谢....

    【问题讨论】:

    • 尝试删除Is_archived = 0进行测试。当然,使用between 更好。
    • 我没有得到预期的结果。 那么,您的预期结果是什么?另外,从你的表中提供一些数据会更好。
    • @Loser,在给定日期之间没有收到帖子..
    • 你得到的输出是什么?
    • 表格的完整结果...未过滤日期

    标签: php sql-server datetime


    【解决方案1】:
    SELECT 
     Pk_blog_id,
     Blog_title,
     Blog_content,
     Created_at 
     FROM dbo.tb_IEAG_Blogs 
     WHERE Is_archived = 0 
     AND cast(Created_at as date) >= '2016-02-01'
     AND cast(Created_at as date) <'2016-02-28'
     ORDER BY tb_IEAG_Blogs.Pk_blog_id DESC 
    

    试试这个。因为您正在比较日期时间,所以 2016-02-01 日期时间不等于您在表中的日期时间。

    如果你想选择月份,这里有一个更适合你的 SQL。

       SELECT 
         Pk_blog_id,
         Blog_title,
         Blog_content,
         Created_at 
         FROM dbo.tb_IEAG_Blogs 
         WHERE Is_archived = 0 
         AND DATEPART(MONTH, CAST(GETDATE() AS DATETIME)) = 2
         ORDER BY tb_IEAG_Blogs.Pk_blog_id DESC 
    

    【讨论】:

    • 您可能还想比较年份,而不仅仅是月份。否则,您每年 2 月都会获得结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    相关资源
    最近更新 更多