【问题标题】:how to convert string to datetime MS Access如何将字符串转换为日期时间 MS Access
【发布时间】:2013-06-14 09:50:27
【问题描述】:

我正在使用 Ms Access,下面是我的查询

select * from travelapproval 
where CDate(datefrom1) <=  Date() 
and CDate(dateto1) >= Date()

我使用 datefrom1 和 dateto1 是文本类型。它显示"Data type mismatch in criteria expression."

即使我尝试使用 CDate 函数,如何将它们转换为日期时间。

【问题讨论】:

  • 你能展示几个示例行吗?
  • 我附上了我的 MS Access 表的图像。
  • 愚蠢的问题;为什么要将日期存储为文本?为什么不直接将数据类型更改为 DateTime 并完成它?
  • 我知道这是一个旧线程,但一个重要的因素是,当查看一大段日期时,比较它们的格式为 YYYY-MM-DD HH 时要容易得多:毫米。所有子字段的宽度相同,最重要的子字段在左侧。

标签: sql ms-access type-conversion


【解决方案1】:

假设您无法将字段类型更改为日期。

检查 datefrom1 和 dateto1 字段中是否有非日期值。

如果你这样做了,请使用以下方法绕过它:

CDate(IIf(IsDate([StringDate]),[StringDate],0))

【讨论】:

    【解决方案2】:

    你可以用这个

      SELECT * from travelapproval
      WHERE Format(datefrom1, "mm/dd/yyyy hh:nn:ss am/pm") <=  Date() 
      AND Format(dateto1, "mm/dd/yyyy hh:nn:ss am/pm") >=  Date() 
    

    你可以找到更多的例子和解释here

    【讨论】:

    • 显示错误 ERROR [42000] [Microsoft][ODBC Microsoft Access Driver] 查询表达式 'Format(datefrom1, mm/dd/yyyy hh:hh:ss) = Date().
    • 这是我建议的新代码。 string strSql = "SELECT * from travelapproval WHERE Format(datefrom1, mm/dd/yyyy hh:nn:ss am/pm) = Date() 并且批准=?";
    • 看看这里对你有什么帮助stackoverflow.com/questions/7263766/…
    • 如果我喜欢这个字符串 strSql = "SELECT * from travelapproval WHERE datefrom1 = Date()";是的,它正在显示记录,但全部。不满足以下条件 datefrom1 = Date()
    • 只是我,还是您缺少日期格式的引号?毕竟是一个字符串。
    【解决方案3】:

    假设日期时间字符串来自 SQL Server,单位为毫秒,

    Format(Replace([SQLSERVER_DATESTRING],".000",""),"mm/dd/yyyy hh:nn:ss am/pm")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      相关资源
      最近更新 更多