當前位置:首頁 » 編程語言 » 距離查詢sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

距離查詢sql

發布時間: 2023-04-13 11:51:46

sql (mysql)怎麼實現查詢某一個經緯度周圍500米距離的餐館,資料庫存放所有餐館的經緯度

回答的有點晚,正好我做到相關的項目了,希望能幫到其他人.

餐館申請時候通過填寫的地址取得經緯度存入資料庫,下面是查詢某個經緯度附近500米的

$user_lat='41.749034'; //傳過來的緯度
$user_lng='123.46017';//傳過來的經度
$store_mod=db("store"); //資料庫
$storelist=$store_mod->query("SELECT
*,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000)
AS distance FROM store HAVING 【搜索條件如 state=1】 distance<【周圍距離多少米 如
500】 ORDER BY distance ASC");
var_mp($storelist);
【】sql語句中括弧的store_latitude,store_longitude為你資料庫存的商家經緯度的欄位名,其餘的為注釋

② sql日期距今多少天

三十天。sql日期距今陪悶三十天。SQL語句計算距離生日還差幾天原理很簡單,將要比較的2個日期的年份統一成一樣的,然後再使用胡空datediff函數蘆做彎計算記錄的數據和當前的日期比較得到相距的天數。

③ sql 查詢 大於 並且距離 當前日期 最近的一條記錄

可以參考以下幾種方法:

1、sqlserver的語法:

select * from table t where t.date = ( select min( date ) from tablet1wheret1>= getdate() )

2、在oracle中可寫成如下:

select * from 表 whereRQin (select min(RQ) from 表 whereRQ>sysdate);

(3)距離查詢sql擴展閱讀:

SQL參考語句

增加列

Alter table table_name add column_name column_type [default 默認值]--在表中增加一列,[]內的內容為可選項

刪除列

Alter table table_name drop column column_name--從表中刪除一列

添加主鍵

Alter table tabname add primary key(col)

④ 使用SQL查詢出當前時間距離2020年1月1日還有多少分鍾.

select datediff(mi,getdate(),'2020-1-1')
select datediff(hour,getdate(),'2020-1-1')
select datediff(second,getdate(),'洞游2020-1-1')
select datediff(day,getdate(),'2020-1-1')
select datediff(month,getdate(),'2020-1-1')
select datediff(week,getdate(),'2020-1-1')

DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。

語法
DATEDIFF ( datepart , startdate , enddate )

參數
datepart

是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。

日期部分 縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

startdate

是計算的開始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。

因為 smalldatetime 只精確到分鍾,所以當用 smalldatetime 值時,秒和毫秒總是 0。

如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止桐顫粗年所在世紀局鎮相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。

有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。

enddate

是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。

返回類型
integer

注釋
startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。

當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。

計算跨分鍾、秒和毫秒這些邊界的方法,使得 DATEDIFF 給出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。

示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。

USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO

⑤ SQL查詢出距當前時間最近的一條或多條記錄。

selecta.*from
表名asa,
(select物料,max(生效日期)as最新生效日期from表名groupby物料)asb
wherea.物料=b.物料anda.生效日期=b.最新生效日期

表名替換一下

⑥ Sql查詢距離指定日期最近日期的一條數據

不同資料庫有不同的寫法,不過思路是一樣的,就是欄位的日期形式減去2008-12-20,然後取絕對值的最小值。找到這個最小值就可以了。
枚舉2個資料庫的寫法
MS SQL SERVER,
select * from table_name
where abs(column_name-convert(datetime,'20081220',112)) in (
select min(abs(column_name-convert(datetime,'20081220',112))) from table_name)

ORACLE
select * from table_name
where abs(column_name-to_date('20081220','yyyymmdd')) in (
select min(abs(column_name-to_date('20081220','yyyymmdd'))) from
table_name
)

註:column_name欄位需要時日期類型,如果不是需要做轉換

⑦ sql server查詢距離當前時間最近的一條記錄,並且記錄的時間大於當前時間

selecttopn*fromtablewherecreate_date>getdate()orderbycreate_dateASC

這個語句就行了,要拉幾條就把n換成幾

這個語句首先按時間篩選大於當前時間的,然後按時間排序,從小到大排序,所以排前面的是離現在比較近的時間

⑧ sql 查詢 大於 並且距離 當前日期 最近的一條記錄

可以參考以下幾種方法:

1、sqlserver的語法:

select * from table t where t.date = ( select min( date ) from tablet1wheret1>= getdate() )

2、粗哪賣緩森在oracle中可寫成如下岩逗:

select * from 表 whereRQin (select min(RQ) from 表 whereRQ>sysdate);

(8)距離查詢sql擴展閱讀:

SQL參考語句

增加列

Alter table table_name add column_name column_type [default 默認值]--在表中增加一列,[]內的內容為可選項

刪除列

Alter table table_name drop column column_name--從表中刪除一列

添加主鍵

Alter table tabname add primary key(col)

⑨ sql (mysql)怎麼實現查詢某一個經緯度周圍500米距離的餐館,資料庫存放所有餐館的經緯度

mysql兩點間距,你也自己弄成函薯山殲數x0dx0ax0dx0a公式如下,單位米:x0dx0a第一點經緯度:lng1 lat1x0dx0a第二唯慎點經緯度:數沖lng2 lat2x0dx0around(6378.138*2*asin(sqrt(pow(sin(x0dx0a(lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*x0dx0apow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000)x0dx0ax0dx0a例如:x0dx0aSELECT store_id,lng,lat,x0dx0aROUND(6378.138*2*ASIN(SQRT(POW(SIN((22.299439*PI()/180-lat*PI()/180)/2),2)+COS(22.299439*PI()/180)*COS(lat*PI()/180)*POW(SIN((114.173881*PI()/180-lng*PI()/180)/2),2)))*1000)x0dx0aASx0dx0a julix0dx0aFROM store_infox0dx0aORDER BY juli DESCx0dx0aLIMIT 316

⑩ 用sql語句查詢離過年還有幾天

思路:

1、首先你要知道哪年的春節是哪天

2、其次還要知道現在是哪年,然後利用函數【datediff】求出距離最近的春節天派激數差值

解決方法:

下面是十年以內的春節日期

2016年2月8號,2017年1月28號,2018年2月16號,2019年2月5號,2020年1月25號,2021年2月12號,2022年2月1號,2023年1月22號,2024年2月10號,2025年1月29號

然後處理SQL語句是:


select
top1
DATEPART(yyyy,chunjie)春節年份,
DATEDIFF(DD,GETDATE(),chunjie)距離塵蔽襪春節剩餘天數
from
(
select'2016-2-8'chunjieunionall
select'2017-1-28'unionall
select'2018-2-16'unionall
select'2019-2-5'unionall
select'2020-1-25'並敏unionall
select'2021-2-12'unionall
select'2022-2-1'unionall
select'2023-1-22'unionall
select'2024-2-10'unionall
select'2025-1-29'
)a
where
DATEDIFF(DD,GETDATE(),chunjie)>=0
orderby
DATEDIFF(DD,GETDATE(),chunjie)