Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 在选择查询中使用相对日期_Sql_Sql Server - Fatal编程技术网

Sql 在选择查询中使用相对日期

Sql 在选择查询中使用相对日期,sql,sql-server,Sql,Sql Server,我试图在查询中使用相对日期。通过搜索,我看到了两种方法(当然还有更多),但这两种方法都不适用于我,我可以在2016-06-14的表格中看到数据 select * from tblMy where DatePrice = GETDATE() - 1 select * from tblMy where DatePrice = DATEADD(DAY, -1, GETDATE()) 这是因为GETDATE()(尽管名称不同)有一个时间组件。因此,如果DatePrice没有时间成分,它们只在午夜匹配

我试图在查询中使用相对日期。通过搜索,我看到了两种方法(当然还有更多),但这两种方法都不适用于我,我可以在2016-06-14的表格中看到数据

select * from tblMy where DatePrice = GETDATE() - 1

select * from tblMy where DatePrice = DATEADD(DAY, -1, GETDATE())

这是因为
GETDATE()
(尽管名称不同)有一个时间组件。因此,如果
DatePrice
没有时间成分,它们只在午夜匹配。如果
DatePrice
确实有时间成分,那么它们几乎永远不会匹配

您可以使用:

where DatePrice = CAST(DATEADD(DAY, -1, GETDATE()) as DATE)
或者,在具有或不具有时间组件的安全版本中:

where DatePrice >= CAST(DATEADD(DAY, -1, GETDATE()) as DATE) AND
      DatePrice < CAST(GETDATE() as DATE)
其中DatePrice>=CAST(DATEADD(DAY,-1,GETDATE())作为日期)和
DatePrice
这是因为
GETDATE()
(尽管名称不同)有一个时间组件。因此,如果
DatePrice
没有时间成分,它们只在午夜匹配。如果
DatePrice
确实有时间成分,那么它们几乎永远不会匹配

您可以使用:

where DatePrice = CAST(DATEADD(DAY, -1, GETDATE()) as DATE)
或者,在具有或不具有时间组件的安全版本中:

where DatePrice >= CAST(DATEADD(DAY, -1, GETDATE()) as DATE) AND
      DatePrice < CAST(GETDATE() as DATE)
其中DatePrice>=CAST(DATEADD(DAY,-1,GETDATE())作为日期)和
DatePrice
啊,这很有道理!我刚才看到的桌子上只有一个没有时间成分的日期啊,这是有道理的!我刚才看到的表只有一个没有时间组件的日期“DatePrice”列的数据类型是什么?DatePrice列的数据类型是什么?