我在Windows Server 2008 Enterprise上使用SQL Server 2008 Enterprise.我在SQL Server 2008中有关于tsql的问题.对于select-where语句,有两种不同的形式,
(1)选择[some value]和[some value]之间的foo,
(2)选择foo> = [some value]和foo <= [其他值]的地方?我不确定是否和使用<=和> =符号相同?
顺便说一句:它们是否总是相同 - 即使对于不同类型的数据(例如比较数值,比较字符串值),如果有人可以提供一些文件来证明它们是否总是相同,那么我会感激,以便我可以从中学到更多.
乔治,提前谢谢
我正在尝试从我的数据库中选择位于用户半径10米范围内的商家.测试显示问题出在我的查询中(虽然没有抛出MySQL错误).变量$ lat和$ lng都是从Javascript导入的,它们也很好.我怀疑这个问题与我使用BETWEEN有关,因为这是我第一次使用它.有任何想法吗?
$r = 20; // in miles
$lat_min = $lat - ($r / 69);
$lat_max = $lat + ($r / 69);
$lng_min = $lng - $r / abs(cos(deg2rad($lat)) * 69);
$lng_max = $lng + $r / abs(cos(deg2rad($lat)) * 69);
$query = "SELECT name FROM businesses WHERE $lat BETWEEN $lat_min AND $lat_max $lng BETWEEN $lng_min AND $lng_max ORDER BY Rand() LIMIT 6";
Run Code Online (Sandbox Code Playgroud) 我希望检索myDate在startDate'和endDate' 之间的所有记录,但不返回具有完全相同日期的记录.我正在使用MS SQL 2005.
我试过了:
Select *
From myDatabase
Where empId = 145
and myDate between startDate and endDate
但是如果myDate是'11/16/2011',则上述查询将返回具有startDate和endDate= '11/16/2011'的记录.这不是我想要的.我不想要有startDate和endDate=的记录myDate
所以我尝试过:
Select *
From myDatabase
Where empId = 145
and myDate between startDate and endDate
and (myDate <> startDate AND myDate <> endDate)
这适用于所有情况吗?
我需要查询,它将检查用户提供的日期范围是否在现有表startdate和enddate之间.如果用户提供的日期范围的任何日期在表开始日期和结束日期之间,则应该从表中重新记录该记录.
例如,用户供应日期范围是从2012年5月1日到2012年5月5日.然后查询必须检查2005年5月2日2005年5月5日2005年5月5日2005年5月5日(所有日期)处于现有表的startdate和enddate之间.
请回复.
我有几个日期存储为varchar,格式如下:01-01-2012
我想在日期之间进行搜索,但遗憾的是它没有像我预期的那样工作.我寻找其他具有相同问题的线程(有点),但那里提供的答案对我不起作用.
这是我的代码:
$fromday = $_POST['fromday'];
$frommonth = $_POST['frommonth'];
$fromyear = $_POST['fromyear'];
$tillday = $_POST['tillday'];
$tillmonth = $_POST['tillmonth'];
$tillyear = $_POST['tillyear'];
$vanaf = "$fromday-$frommonth-$fromyear";
$tot = "$tillday-$tillmonth-$tillyear";
// zoeken
$sel = "SELECT * FROM bestelling WHERE verzenddatum >= '$vanaf' AND verzenddatum <= '$tot'";
$dosel = mysql_query($sel) or die(mysql_error());
while($row = mysql_fetch_assoc($dosel))
{
$datum = $row['verzenddatum'];
echo $datum;
}
Run Code Online (Sandbox Code Playgroud)
请让我知道我做错了什么!
我正在寻找相当于这个SQL查询的mongo:
SELECT country
FROM geoip
WHERE
2921648058 BETWEEN start AND end
Run Code Online (Sandbox Code Playgroud)
我的MongoDB文档如下所示:
{
"_id" : ObjectId("52daefed0c78fc8c9085498d"),
"country" : "DE",
"end" : "16777471",
"start" : "16777216"
}
Run Code Online (Sandbox Code Playgroud)
这些数字是转换为int格式的IP地址.不幸的是,关于这一点的所有搜索只出现了$ gt和$ lt运算符,在这种情况下没有多大用处,因为我不想检索范围内某个字段的文档,但文档中的范围很大如果文档本身符合搜索中给定的数字.
由于数据库的庞大规模,浏览所有记录并在脚本中评估结果不是一种选择.
例如,让我们采取以下问题.使用之间有什么区别:
SELECT * FROM foo_table
WHERE column BETWEEN n and m
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM foo_table
WHER column>=n and column<=m?
Run Code Online (Sandbox Code Playgroud)
看起来很简单,Oracle的文档对此非常明确:
[Between]表示"大于或等于低值且小于或等于高值".
从语义的角度来看,它们是相同的.但是,SQL是一种声明性语言.所以,你不会期望同一个执行计划有两个语义相同的语句,对吗?
我的问题是:
我试图BETWEEN在where子句中使用日期范围选择数据,但它不返回正确的结果.日期字段的格式'mm/dd/YYYY'为,varchar
我的查询类型为
select * from time_track where track_date between '01/01/2015' and '01/21/2015'
Run Code Online (Sandbox Code Playgroud)
但结果包含2014年的数据.
谁能帮帮我吗
我浏览了所有相关的帖子,但我找不到我错的地方.我的目标是如果时间在早上6点到晚上7点之间有一个图片显示,如果时间在晚上7点到早上6点之间则有一个不同的图片.这就是我所拥有的,现在我感到困惑.
date_default_timezone_set('Canada/Newfoundland'); // NDT
$current_date = date('G:i:s');
if ($current_date >= 19 && $current_date <= 6) {
echo "<img src=' $night ' />";
} else {
echo "<img src=' $day ' />";
}
Run Code Online (Sandbox Code Playgroud)
每当我运行我所拥有的东西时,它总是出现在其他地方所以我相信问题在于我如何设置时间?提前感谢您提供的任何帮助.
我有两列,年份和支付期(1,2,3,4 ......).我正在绞尽脑汁试图弄清楚如何根据这些做一个介于两者之间.
比如说我有:
2017 1
2017 2
2017 3
2017 4
-------------v
2017 5
2017 6
...
2017 51
2017 52 (typically, not guaranteed to be 52 periods)
2018 1
2018 2
2018 3
2018 4
-------------^
2018 5
...
Run Code Online (Sandbox Code Playgroud)
我想选择2017(5)和2018(4)之间的所有行,我该怎么做?我尝试了几种不同的方法,但无法弄明白.薪酬期通常是1-52,但我不能指望.
between ×10
date ×4
sql ×4
mysql ×3
php ×3
sql-server ×2
date-range ×1
if-statement ×1
ip ×1
logic ×1
mongodb ×1
optimization ×1
oracle ×1
pymongo ×1
t-sql ×1
time ×1
where ×1