GVKun编程网logo

在另一个范围内查找地理点-SQL Server(在一个区域内查找一个值,返回列号和行号)

11

在本文中,您将会了解到关于在另一个范围内查找地理点-SQLServer的新资讯,同时我们还将为您解释在一个区域内查找一个值,返回列号和行号的相关在本文中,我们将带你探索在另一个范围内查找地理点-SQL

在本文中,您将会了解到关于在另一个范围内查找地理点-SQL Server的新资讯,同时我们还将为您解释在一个区域内查找一个值,返回列号和行号的相关在本文中,我们将带你探索在另一个范围内查找地理点-SQL Server的奥秘,分析在一个区域内查找一个值,返回列号和行号的特点,并给出一些关于c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式、mysql – 在特定日期范围内查找结果、php – 计算日期范围内的天数在另一个日期范围内、php在数组范围内查找值的实用技巧。

本文目录一览:

在另一个范围内查找地理点-SQL Server(在一个区域内查找一个值,返回列号和行号)

在另一个范围内查找地理点-SQL Server(在一个区域内查找一个值,返回列号和行号)

我在SQL
Server中有一个表,其中有“地理数据类型”列。我想查询该表以查找位于另一个给定地理点附近(在一定范围内)的行。有人对实现此目标的最佳方法有任何想法吗?我有2种选择在哪里进行这种类型的查询。我可以将其作为存储的proc在sql服务器上编写,也可以在c#代码中完成,因为我正在使用实体框架进行数据访问。

我将查询一个范围(例如100m)和传入的地理位置的查询。伪代码将是这样的…

选择行,其中rows.geo在给定地理点的范围内

我在网络上的SQL Server中查找地理位置查询示例时遇到了一些麻烦。

任何帮助,将不胜感激。

答案1

小编典典

假设您在数据库中具有点的经度和纬度值。

select * from yourtable where SQRT ( POWER((yourtable.lat - reflat) * COS(reflat/180) * 40000 / 360, 2) + POWER((yourtable.long - reflong) * 40000 / 360, 2)) < radiusofinterest

reflat和reflong是您想知道附近地点的起点。感兴趣的半径是到该点的距离。40000是地球的周长。您可以使用更准确的数字。

我还没有使用SQLServer检查语法。…所以那里可能有一些错误。

cos(reflat)会根据您所在的纬度来校正周长。对于较小的距离,它应该可以正常工作。

c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式

c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式

将数据从一个数据库(sql server 2008)传输到另一个具有不同模式的数据库(sql server 2008)的最佳方法是什么?

有没有这样做的程序?

谢谢你的未来asnwer

最好的祝福

解决方法

根据您的需求有多复杂,您可能需要考虑使用 SSIS.

mysql – 在特定日期范围内查找结果

mysql – 在特定日期范围内查找结果

我试图只抓取属于某个日期范围的记录.问题是时间戳和日期作为字符串存储在同一单元格中.我想只抓住日期在2013-05-01和2013-05-03之间的行.

日期(存储为字符串)

2013-05-01T23:19:44
2013-05-02T23:19:40
2013-05-06T23:19:46
2013-05-06T23:15:17

MysqL的

SELECT * FROM table WHERE date BETWEEN 2013-05-01 AND 2013-05-03
最佳答案
尝试

SELECT *
  FROM table1
WHERE STR_TO_DATE(`date`,'%Y-%m-%d') BETWEEN '2013-05-01' AND '2013-05-03'

SQLFiddle

正如@FreshPrinceOfSO绝对正确地指出的那样,在这种情况下不会使用索引

php – 计算日期范围内的天数在另一个日期范围内

php – 计算日期范围内的天数在另一个日期范围内

从10月1日到3月31日,费用为1美元(第1季).从4月1日到9月30日,费用为2美元(第2季).

如何计算给定日期范围(用户输入)的总费用,具体取决于此日期范围属于第1季和第2季的天数?

以下给出了用户日期范围的天数,但我不知道如何测试第1季或第2季:

$user_input_start_date = getdate( $a );
$user_input_end_date = getdate( $b );

$start_date_new = mktime( 12, 0, 0, $user_input_start_date['mon'], $user_input_start_date['mday'], $user_input_start_date['year'] );
$end_date_new = mktime( 12, 0, 0, $user_input_end_date['mon'], $user_input_end_date['mday'], $user_input_end_date['year'] );

return round( abs( $start_date_new - $end_date_new ) / 86400 );

鉴于日期范围在2012年开始和结束,或者从2012年开始到2013年结束,这给了我10种不同的可能性,在这个季节中,日期范围可以开始,也可以结束.

必须有一个比迭代if / else更好的解决方案,并在以下条件下反复比较日期:

>日期范围完全在第1季
>日期范围从第1季开始,到第2季结束
>日期范围从第1季开始,跨越第2季,并在第1季的第二部分结束

……以及“第2季开始”等等

这不是How many days until X-Y-Z date?的重复,因为它只涉及计算天数.它没有解决将一个日期范围与另一个日期范围进行比较的问题.

解决方法:

这个问题的关键是尽可能地简化它.我认为使用数组作为查询表来获取一年中每一天的成本是可行的方法.首先要做的是生成数组.该数组仅代表一年中的每一天,并不代表任何特定年份.我选择使用2012来生成查找数组,因为它是闰年,因此每天都有可能.

function getSeasonArray()
{
    /**
     * I have chosen 2012 as it was a leap year. All we want to do is
     * generate an array which has avery day of the year in it.
     */
    $startDate = new DateTime('1st January 2012');
    //DatePeriod always drops the last day.
    $endDate = new DateTime('1st January 2013');
    $season2Start = new DateTime('1st April 2012');
    $season2End = new DateTime('1st October 2012');

    $allDays = new DatePeriod($startDate, new DateInterval('P1D'), $endDate);
    $season2Days = new DatePeriod($season2Start, new DateInterval('P1D'), $season2End);

    $seasonArray = array();

    foreach($allDays as $day){
        $seasonArray[] = $day->format('d-M');
        $seasonArray[$day->format('d-M')]['season'] = 1;
    }

    foreach($season2Days as $day){
        $seasonArray[$day->format('d-M')]['season'] = 2;
    }

    return $seasonArray;
}

一旦完成,您只需要计算的时间段: –

$bookingStartDate = new DateTime();//Or wherever you get this from
$bookingEndDate = new DateTime();
$bookingEndDate->setTimestamp(strtotime('+ 7 month'));//Or wherever you get this from
$bookingPeriod = new DatePeriod($bookingStartDate, new DateInterval('P1D'),   $bookingEndDate);

然后我们可以做计算: –

$seasons = getSeasonArray();
$totalCost = 0;
foreach($bookingPeriod as $day){
    $totalCost += $seasons[$day->format('d-M')]['season'];
    var_dump($day->format('d-M') . ' = $' . $seasons[$day->format('d-M')]['season']);
}
var_dump($totalCost);

我选择了较长的预订期限,以便您可以浏览var_dump()输出并验证一年中每一天的正确价格.

这是在工作中分散注意力之间的快速刺激,我确信通过一些思考,您可以将其塑造成更优雅的解决方案.我想摆脱双重迭代,不幸的是,工作压力使我无法在此花费更多时间.

有关这些有用类的更多信息,请参见PHP DateTime man page.

php在数组范围内查找值

php在数组范围内查找值

我有以下数组:

$groupA= array(1,10);
$groupB = array(11,20);
$groupC = array(21,30);

用户可以在文本框中输入任何数值,例如“5”,现在我需要显示该编号所在的用户.我以这种方式完成了这个:

然后像这样做一个开关盒:

switch ($input){
    case ($input>= $groupA[0] && $input<= $groupA[1]):
        echo "You are in Group A.";
    break;
    case ($input>= $groupB[0] && $input<= $groupB[1]):
        echo "You are in Group B.";
    break;

然而,这看起来似乎不可行,因为我们有很多组(可能超过200个)并且使用这么多开关案例是无效的.

关于如何更优雅地解决这个问题的任何想法?

解决方法:

我做了一个数组:

$groups = array();

$groups['groupA'] = array('min'=>1,'max'=>100);
$groups['groupB'] = array('min'=>1,'max'=>100);

然后

foreach($groups as $label => $group)
{
    if($input >= $group['min'] && $input <= $group['max'])
    {
        echo "You are in group $label";
        break;
    }
}

或者你可以将它们放在数据库中

关于在另一个范围内查找地理点-SQL Server在一个区域内查找一个值,返回列号和行号的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式、mysql – 在特定日期范围内查找结果、php – 计算日期范围内的天数在另一个日期范围内、php在数组范围内查找值等相关知识的信息别忘了在本站进行查找喔。

本文标签: