【问题标题】:Match current date with an sql database entry in c++将当前日期与 C++ 中的 sql 数据库条目匹配
【发布时间】:2013-07-14 07:57:10
【问题描述】:

我的 SQL 数据库中有 日期 字段。 我只想将那些记录写入日期与当前日期/系统日期匹配的文件中。

我在 ** 中找不到任何用于匹配两个日期的 SQL 查询。

应该用什么来代替???

SELECT * FROM attendence where Date = ???

【问题讨论】:

    标签: c++ mysql visual-c++


    【解决方案1】:

    取决于日期时间格式

    如果它的'2012-10-09 15:04:58'

    SELECT * FROM attendence where Date = CURRENT_TIMESTAMP
    

    如果它的'2012-10-09'

    SELECT * FROM attendence where Date = CURRENT_DATE
    

    【讨论】:

    • 或代替 CURRENT_TIMESTAMP 使用 NOW()
    • CURRENT_TIMESTAMP 特定于客户端机器上的时间,而不是服务器上的时间。它还取决于会话而不是服务器
    • lol "CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP() 是 NOW() 的同义词" dev.mysql.com/doc/refman/5.1/en/…
    【解决方案2】:

    它还通过以下方式起作用:

    SELECT * FROM attendence where Date = '"+System::DateTime::Now.ToString("yyyy-MM-dd") +"'
    

    最后的格式被添加,因为日期是在数据库中以该格式添加的。

    【讨论】:

      【解决方案3】:

      试试这个:

      SELECT * FROM attendence where Date(Date) = NOW()
      

      【讨论】:

      • 现在包括时间,看起来他刚刚约会。如果您进行时间匹配,它只会返回在同一天时分秒编辑的记录
      【解决方案4】:

      除非 mysql 数据库和最终用户之间存在时区差异(如在 c++ 应用程序中远程查询另一个时区中的 mysql 数据库),否则应该可以正常工作:

      SELECT * FROM attendence WHERE Date = CURDATE()
      

      如果需要考虑时区因素,您要么必须提供最终用户系统日期作为查询参数,要么告诉 MySQL 最终用户所在的时区并使用

      CONVERT_TZ(CURDATE(), from_tz, to_tz);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        • 2021-12-22
        • 1970-01-01
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 2019-06-02
        相关资源
        最近更新 更多