在 VBA 中创建 SQL 视图

问题描述

我正在尝试在我的数据库中名为 petients 的表上创建一个视图。该表有五列。其中之一是我想保留患者入院日期的列。它的数据类型是日期时间,所以我想创建一个基于 current date 过滤此表中数据的查询。例如,我想创建一个视图,仅显示当天记录的患者的详细信息。

这是我的代码

CREATE VIEW [dbo].[recent petients]
AS 
    SELECT petient_id,name,age,contact 
    FROM [petients] 
    WHERE [date] = 'date.Today'

我收到一条错误消息,指出无法将日期转换为字符串。能不能帮我解决一下,或者我的代码哪里错了?

解决方法

您的代码看起来像 SQL Server 代码。如果是这样,我会建议:

SELECT petient_id,name,age,contact
FROM [patients] 
WHERE [date] = CONVERT(date,GETDATE());

请注意:此版本比 DATEDIFF() 好得多,因为它允许在 patient([date]) 上使用索引。

如果“日期”列有时间组件,可以使用:

WHERE CONVERT(date,[date]) = CONVERT(date,GETDATE())

请注意,这在 SQL Server 中也是索引安全的。

,

我假设您使用的是 Microsoft SQL Server 的 Transact-SQL,但您应该指定您使用的 sql 方言。

由于日期时间字段类型一般也包含时间,所以最好使用DATEDIFF函数:https://docs.microsoft.com/it-it/sql/t-sql/functions/datediff-transact-sql?view=sql-server-ver15

在您的情况下,仅考虑 date=today 的记录,天数差必须为零:

--SQL QUERY
WHERE DATEDIFF(day,GETDATE(),[date]) = 0
  1. day 标识要考虑差异的元素。可在链接中找到名称或缩写列表
  2. GETDATE() 现在返回日期时间
  3. 第二个和第三个参数是您想要区分的日期