Sql server 在VBA中创建SQL视图
我试图在数据库中名为Sql server 在VBA中创建SQL视图,sql-server,vba,sql-view,Sql Server,Vba,Sql View,我试图在数据库中名为petients的表上创建一个视图。该表有五列。其中一个是我想保留患者入院日期的专栏。它的数据类型是datetime,因此我想创建一个查询,根据当前日期筛选此表中的数据。例如,我想创建一个视图,只显示当天已记录的患者的详细信息 这是我的密码: CREATE VIEW [dbo].[recent petients] AS SELECT petient_id, name, age, contact FROM [petients] WHERE [dat
petients
的表上创建一个视图。该表有五列。其中一个是我想保留患者入院日期的专栏。它的数据类型是datetime,因此我想创建一个查询,根据当前日期
筛选此表中的数据。例如,我想创建一个视图,只显示当天已记录的患者的详细信息
这是我的密码:
CREATE VIEW [dbo].[recent petients]
AS
SELECT petient_id, name, age, contact
FROM [petients]
WHERE [date] = 'date.Today'
我收到一个错误,说明无法将日期转换为字符串。您能帮我解决这个问题吗?或者我的代码哪里出错了?我假设您使用的是Microsoft SQL Server中的Transact-SQL,但您应该指定您使用的SQL方言 由于datetime字段类型通常还包括时间,因此最好使用
DATEDIFF
函数:
在你的情况下,只考虑记录<代码>日期=今天< /C> >,天的差值必须为零:
--SQL QUERY
WHERE DATEDIFF(day, GETDATE(), [date]) = 0
GETDATE()
立即返回datetime您的代码看起来像SQL Server代码。如果是,我建议:
SELECT petient_id, name, age, contact
FROM [patients]
WHERE [date] = CONVERT(date, GETDATE());
注意:此版本比DATEDIFF()
好得多,因为它允许在患者([date])
上使用索引
如果“日期”列包含时间组件,则可以使用:
WHERE CONVERT(date, [date]) = CONVERT(date, GETDATE())
请注意,这在SQL Server中也是索引安全的。请在下次使用时注意您的屏蔽。我今天把它改了。谢谢。请用您正在使用的数据库标记您的问题。您说要创建视图。为什么?这是一个在应用程序中实现的简单查询,应用程序可能需要以多种不同的方式查询该表。那么,您是否打算为每个“搜索”情况创建视图?添加到数据库中的对象越多,创建的维护和测试对象的工作就越多。我似乎也在等待发现模式问题——但这是一个完全不同的问题。它是可搜索的,但可能会。当然比datediff的胡说八道更容易理解。