Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在VBA中创建SQL视图_Sql Server_Vba_Sql View - Fatal编程技术网

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的胡说八道更容易理解。