日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 查询时间转换_数据库查询时日期的转换

發布時間:2023/12/10 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 查询时间转换_数据库查询时日期的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先簡單說明一下,laravel框架中查詢并打印sql語句的辦法,不管任何時候由于sql語句報錯時,都可以先打印一下,分析一下是什么原因造成的錯誤

①引入laravel框架DB類useIlluminate\Support\Facades\DB;

②開啟框架日志記錄

DB::connection()->enableQueryLog();

③條件,即要查詢的sql語句User::all();

④輸出打印所有的日志(sql)

dd(DB::getQueryLog());

回歸正題:這里遇到的問題是查詢語句中的時間戳的轉換(laravel查詢構建器);

初試:時間分組的顯示,這里使用的原生查詢方法(DB:raw()),先使用from_unixtime( ),時間戳轉換為日期格式,然后使用格式化函數,將日期改為需要顯示的日期并進行分組.

$summary = Article::query()->select(DB::raw("DATE_FORMAT(from_unixtime(art_time),‘%Y-%m‘) as time"))->groupBy(‘art_time‘)->orderBy(‘art_time‘,‘desc‘)->get();

接下來需要將同一日期下的文章填到上面得到的日期下

foreach ($summary as $v) {$childart = DB::select("select DATE_FORMAT(from_unixtime(art_time),‘%Y‘) as sumtime,art_id,art_title from blog_article where sumtime =".$v->time);$v->childart = $childart;

}

這里開始報錯:

這個錯誤很簡單,查詢where條件不能取前面別名,數據庫沒有這個字段自然會報錯,然后修改了語句

foreach ($summary as $v) {$childart = DB::select("select DATE_FORMAT(from_unixtime(art_time),‘%Y‘) as sumtime,art_id,art_title from blog_article where date_format(from_unixtime(art_time),‘%Y-%m‘)= ".$v->time);print_r(DB::getQueryLog());

dd($childart);$v->childart = $childart;

}

再次查詢,發現為空,于是打印了sql語句如下:

沒有報錯,查詢為空,可以想到是由于where條件不匹配的原因導致的,然后發現date_format格式化后應該為一個字符串,這里顯示的數字,自然不會查詢出來。于是修改sql語句

foreach ($summary as $v) {$childart = DB::select("select DATE_FORMAT(from_unixtime(art_time),‘%Y‘) as sumtime,art_id,art_title from blog_article where date_format(from_unixtime(art_time),‘%Y-%m‘) = ‘".$v->time."‘");dd($childart);$v->childart = $childart;

}

到此,此問題解決。

后續:在自己看完打印出來的sql語句后,覺得根本沒有問題,多次修改sql語句后仍無查到信息,由于對mysql查詢的不了解以及之前不怎么使用date_format(),認為where條件不能這樣寫(where date_format(from_unixtime(art_time),‘%Y-%m‘) = .$v->time),即where條件中對字段進行修飾,于是想存的時間戳太過麻煩,便直接到數據庫增加一個字段用來存放時間日期格式,更新這個字段內容的時候使用了之前講的通過表格sublime操作mysql的簡便方法。做了20條語句:

到sql編輯器中運行sql語句,運行成功。看了看這條語句,又想了想之前的那條,覺得即使在where條件中加date_format應該也是可以的。

再次嘗試:直接在sql編輯器中嘗試了以下兩條語句,運行,成功了

update blog_article set summary =date_format(from_unixtime(art_time),‘%Y-%m‘) where art_id =8;

select * from blog_article where date_format(from_unixtime(art_time),‘%Y-%m‘) = ‘2018-08‘;

突然發現這里的date_format等于的是一個字符串,發現了原因,到查詢為空的語句中加上了引號,終于解決了問題。

總結

以上是生活随笔為你收集整理的mysql 查询时间转换_数据库查询时日期的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。