【问题标题】:Selecting phone calls in where date is today选择今天日期的电话
【发布时间】:2017-06-08 11:04:56
【问题描述】:

我正在尝试从 SQL 2012 中的 Avaya 数据库中检索电话,但我似乎无法正确获取代码中的日期。

cmdCalls = String.Format("SELECT * FROM dbo.tblCallList WHERE CreateDate > cast('" & DateYesterday & "' as date)")

这是我的查询字符串

Dim DateYesterday As Date = Date.Today.AddDays(<insert number of days>).ToString("yyyy-MM-dd")

我似乎无法从数据库中提取我需要的数据,它确实从日期变量中减去了天数,但问题是它在查询中使用天数作为月份,它显示了当月的所有记录一天

例如,数据库中的日期格式为“2017-06-08 12:04::00:000”

【问题讨论】:

  • CreateDate 列的数据库数据类型是什么?如果像datetime这样的时间类型而不是char/varchar,它是二进制结构,没有格式。
  • 我不确定,但它可能真的只是约会
  • 它不能是日期,因为该值包含小时和分钟。

标签: sql sql-server vb.net


【解决方案1】:

使用数据库中的当前日期:

SELECT *
FROM dbo.tblCallList
WHERE CreateDate >= CAST(getdate() as date);

【讨论】:

  • 我不知道为什么,但返回 0 个结果
  • @K.Chanel 。 . .您应该编辑问题并提供示例数据。同时,试试cast(getdate() - 1 as date) 看看你是否从昨天得到了什么。
  • 为什么不使用正确的 dateadd? `where createDate >= cast(dateadd(day, -1, getdate()) as date);
  • 这两个答案仍然返回 0,似乎只减去几个月
  • @GordonLinoff 至于样本数据,它只返回上个月的所有调用,即 4000 并且大大增加了内存使用