Класс GeoCoordinate (.NET Framework 4 и выше) уже имеет метод GetDistanceTo
.
var sCoord = new GeoCoordinate(sLatitude, sLongitude);
var eCoord = new GeoCoordinate(eLatitude, eLongitude);
return sCoord.GetDistanceTo(eCoord);
Расстояние находится в метрах .
Вам нужно обратиться к System.Device.
Во-первых, о вашем неверном значении даты. Это правильно, потому что когда вы пропускаете ''
вокруг 2020-03-20
, SQL Server делает неявное преобразование типа данных . Следующий пример демонстрирует это:
Неявное преобразование:
DECLARE @date datetime
SELECT @date = 2020-03-20
SELECT @date
SELECT DATEADD(day, 2020-03-20, 0)
Вывод:
1905-06-21 00:00:00.000
Во-вторых, если вы хотите передать значения даты и времени, просто используйте соответствующий формат - 'yyyy-MM-dd'
, 'yyyyMMdd hh:nn:ss'
или 'yyyy-MM-ddThh:nn:ss'
:
"UPDATE TABLENAME set COL1 = ". Во-первых, о вашем неверном значении даты. Это правильно, потому что когда вы пропускаете ''
вокруг 2020-03-20
, SQL Server делает неявное преобразование типа данных . Следующий пример демонстрирует это:
Неявное преобразование:
[110] Вывод:
[111] Во-вторых, если вы хотите передать значения даты и времени, просто используйте соответствующий формат - 'yyyy-MM-dd'
, 'yyyyMMdd hh:nn:ss'
или 'yyyy-MM-ddThh:nn:ss'
:
[112] Я не знаю, как вы подключаетесь к SQL Server, но попробуйте использовать подготовленные операторы . [ 1117]
Обновление (Извлечение и отправка значений даты и времени с и на SQL Server):
На основе драйвера, который вы используете для подключения к SQL Server, вы можете получить значения даты и времени как текст или как объект даты и времени PHP (если вы используете драйвер PHP для SQL Server), но вам нужно отправить эти значения в виде текста. В вашем случае значения возвращаются в виде текста. Поэтому вам нужно сгенерировать универсальное значение даты и времени (например, в 'yyyy-MM-ddThh:nn:ss'
) как текст.
В следующем примере показаны некоторые допустимые и недействительные комбинации для оператора UPDATE
T-SQL для вашего столбца datetime. Он протестирован с драйвером PHP для SQL Server 4.0.3.
<?php
# Value from database as text
$row['COL3'] = '2019-03-29T11:35:30.0000000';
# Valid statement
$tsql = "UPDATE TABLENAME SET COL3 = '".substr($row['COL3'], 0, 19)."' ";
# Valid statement - date("Y-m-d\Th:i:s") will return current datetime
$tsql = "UPDATE TABLENAME SET COL3 = '".date("Y-m-d\Th:i:s")."' ";
# Invalid statement - date("d-m-Y h:i:s", $row['COL3']) expects int as second parameter,
# generates warning and returns '01-01-1970 12:33:39' as result
$tsql = "UPDATE TABLENAME SET COL3 = '".date("d-m-Y h:i:s", $row['COL3'])."' ";
?>
POST[VAL1].", COL2 = ". Во-первых, о вашем неверном значении даты. Это правильно, потому что когда вы пропускаете ''
вокруг 2020-03-20
, SQL Server делает неявное преобразование типа данных . Следующий пример демонстрирует это:
Неявное преобразование:
[110] Вывод:
[111] Во-вторых, если вы хотите передать значения даты и времени, просто используйте соответствующий формат - 'yyyy-MM-dd'
, 'yyyyMMdd hh:nn:ss'
или 'yyyy-MM-ddThh:nn:ss'
:
[112] Я не знаю, как вы подключаетесь к SQL Server, но попробуйте использовать подготовленные операторы . [ 1117]
Обновление (Извлечение и отправка значений даты и времени с и на SQL Server):
На основе драйвера, который вы используете для подключения к SQL Server, вы можете получить значения даты и времени как текст или как объект даты и времени PHP (если вы используете драйвер PHP для SQL Server), но вам нужно отправить эти значения в виде текста. В вашем случае значения возвращаются в виде текста. Поэтому вам нужно сгенерировать универсальное значение даты и времени (например, в 'yyyy-MM-ddThh:nn:ss'
) как текст.
В следующем примере показаны некоторые допустимые и недействительные комбинации для оператора UPDATE
T-SQL для вашего столбца datetime. Он протестирован с драйвером PHP для SQL Server 4.0.3.
<?php
# Value from database as text
$row['COL3'] = '2019-03-29T11:35:30.0000000';
# Valid statement
$tsql = "UPDATE TABLENAME SET COL3 = '".substr($row['COL3'], 0, 19)."' ";
# Valid statement - date("Y-m-d\Th:i:s") will return current datetime
$tsql = "UPDATE TABLENAME SET COL3 = '".date("Y-m-d\Th:i:s")."' ";
# Invalid statement - date("d-m-Y h:i:s", $row['COL3']) expects int as second parameter,
# generates warning and returns '01-01-1970 12:33:39' as result
$tsql = "UPDATE TABLENAME SET COL3 = '".date("d-m-Y h:i:s", $row['COL3'])."' ";
?>
POST[VAL2].", COL3 = '2020-03-20' WHERE COL0 = 'VAL0'"
Я не знаю, как вы подключаетесь к SQL Server, но попробуйте использовать подготовленные операторы . [ 1117]
Обновление (Извлечение и отправка значений даты и времени с и на SQL Server):
На основе драйвера, который вы используете для подключения к SQL Server, вы можете получить значения даты и времени как текст или как объект даты и времени PHP (если вы используете драйвер PHP для SQL Server), но вам нужно отправить эти значения в виде текста. В вашем случае значения возвращаются в виде текста. Поэтому вам нужно сгенерировать универсальное значение даты и времени (например, в 'yyyy-MM-ddThh:nn:ss'
) как текст.
В следующем примере показаны некоторые допустимые и недействительные комбинации для оператора UPDATE
T-SQL для вашего столбца datetime. Он протестирован с драйвером PHP для SQL Server 4.0.3.
<?php
# Value from database as text
$row['COL3'] = '2019-03-29T11:35:30.0000000';
# Valid statement
$tsql = "UPDATE TABLENAME SET COL3 = '".substr($row['COL3'], 0, 19)."' ";
# Valid statement - date("Y-m-d\Th:i:s") will return current datetime
$tsql = "UPDATE TABLENAME SET COL3 = '".date("Y-m-d\Th:i:s")."' ";
# Invalid statement - date("d-m-Y h:i:s", $row['COL3']) expects int as second parameter,
# generates warning and returns '01-01-1970 12:33:39' as result
$tsql = "UPDATE TABLENAME SET COL3 = '".date("d-m-Y h:i:s", $row['COL3'])."' ";
?>