Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 Foxpro中间条款_Sql Server_Tsql_Foxpro - Fatal编程技术网

Sql server Foxpro中间条款

Sql server Foxpro中间条款,sql-server,tsql,foxpro,Sql Server,Tsql,Foxpro,我目前正在研究foxpro查询,也称为if-SQL-where-dunk,我需要帮助理解某些东西是如何工作的,因为我对foxpro完全陌生 SELECT keyfld, SUBSTR(CCB_SERIAL,11,2) AS a ; FROM g:\mirror\DBFS\CCB ; WHERE (BETWEEN({^2018-01-01},pl_st_dt, pl_end_dt) or BETWEEN({^2018-03-31},pl_st_dt,pl_end_dt)) 我对如何解释最后

我目前正在研究foxpro查询,也称为if-SQL-where-dunk,我需要帮助理解某些东西是如何工作的,因为我对foxpro完全陌生

SELECT keyfld, SUBSTR(CCB_SERIAL,11,2) AS a ;
FROM g:\mirror\DBFS\CCB ;
WHERE 
(BETWEEN({^2018-01-01},pl_st_dt, pl_end_dt) or 
BETWEEN({^2018-03-31},pl_st_dt,pl_end_dt)) 
我对如何解释最后两行的理解是

where
     pl_st_dt >= '2018-01-01' OR
     pl_end_dt >= '2018-01-01' OR
     pl_st_dt <= '2018-03-31' OR
     pl_end_dt <= '2018-03-31'
在哪里
pl_st_dt>=“2018-01-01”或
pl_end_dt>=“2018-01-01”或
不太好

两者之间的差异相当于:

({^2018-01-01} BETWEEN pl_st_dt and pl_end_dt) or 
({^2018-03-31} BETWEEN pl_st_dt and pl_end_dt)
因此,您的等效性为:

WHERE
  (pl_st_dt <= '2018-01-01' AND '2018-01-01' <= pl_end_dt)
  OR
  (pl_st_dt <= '2018-03-31' AND '2018-03-31' <= pl_end_dt)
在哪里
(p

两者之间的差异相当于:

({^2018-01-01} BETWEEN pl_st_dt and pl_end_dt) or 
({^2018-03-31} BETWEEN pl_st_dt and pl_end_dt)
因此,您的等效性为:

WHERE
  (pl_st_dt <= '2018-01-01' AND '2018-01-01' <= pl_end_dt)
  OR
  (pl_st_dt <= '2018-03-31' AND '2018-03-31' <= pl_end_dt)
在哪里

(pl_st_dt如果您不是在与SQL Server交谈,使用FoxPro显式日期格式而不是字符串会更快。也就是说,{^2018-01-01}而不是“2018-01-01”

也不容易出错,因为根据FoxPro的日期设置,字符串可能以不同的方式解释


要记住的另一件事是FoxPro表同时具有日期和日期时间数据类型。日期是整数(意味着精确的比较是可靠的),但IIRC,后者的分辨率为亚毫秒。再次IIRC,在比较两者时,FoxPro只是将日期时间截断为日期,因此要小心意外结果。

如果您不是在与SQL Server对话,使用FoxPro显式日期格式而不是字符串会更快。也就是说,{^2018-01-01}而不是“2018-01-01”

也不容易出错,因为根据FoxPro的日期设置,字符串可能以不同的方式解释


要记住的另一件事是FoxPro表同时具有日期和日期时间数据类型。日期是整数(意味着精确的比较是可靠的),但IIRC,后者的分辨率为亚毫秒。再次IIRC,在比较两者时,FoxPro只是将Datetime截断为一个日期,因此要小心意外结果。

删除了sql server和tsql标记,因为这与sql server无关……你说这是FoxPro。编辑我的帖子,解释为什么我首先有这些标记。注意在原始查询中使用括号。所以不-你的tsql查询不一样。我建议原始查询可能在逻辑上有缺陷-但谁能在不理解此类查询的用途/目标的情况下说呢。删除了sql server和tsql标记,因为这与sql server无关…你说这是foxpro。编辑我的帖子来解释是的,我一开始就有这些标记。请注意原始查询中使用的括号。因此,不-您的tsql查询不一样。我建议原始查询可能存在逻辑缺陷-但谁能在不理解此类查询的用途/目标的情况下说呢。