簡體   English   中英

當數據類型為varchar時,如何在Laravel中獲取大於當前日期的所有記錄

[英]how to get all records greater than current date in Laravel when datatype is varchar

我是Laravel的新人。 我在MYSQL中編寫了查詢。 我想在Laravel中查詢,任何人都可以幫忙嗎?

SELECT * FROM `fixtures`
WHERE STR_TO_DATE(date,'%d-%m-  %Y')>=STR_TO_DATE('03-11-2016','%d-%m-%Y')

列名是數據類型為varchar的日期。 我知道日期字段的錯誤DataType。

哪里

STR_TO_DATE(colname,'%m/%d/%Y) > date(now())

像這樣檢查:

SELECT * FROM `fixtures`
WHERE DATE_FORMAT(date, '%Y-%m-%d') >= '2016-11-03'

或以雄辯的方式:

\DB::table('fixtures')
    ->where(\DB::raw("DATE_FORMAT(date, '%Y-%m-%d')"), '>=', '2016-11-03')
    ->get();

以年 - 月 - 日的方式。 這比較好。 這應該有效。

如果您要求或有特定日期,

whereDate('date_column_name', '>=', $date_variable_name);

要么

whereDate('date_column_name', '>=', '2016-11-02');

試試這個。

使用Laravel EloquentCarbon

q->whereDate('date ','>',Carbon::createFromFormat('d-m-Y','03-11-2016'));

碳文件

使用whereRaw表達式。

雄辯的語法:

Fixture::whereRaw('STR_TO_DATE(date,"%d-%m-%Y") >= STR_TO_DATE("3-11-2016","%d-%m-%Y")')

查詢Bulider語法:

DB::table('fixtures')
    ->whereRaw('STR_TO_DATE(date,"%d-%m-%Y") >= STR_TO_DATE("03-11-2016","%d-%m-%Y")');

注意:我假設日期將被用戶接受,因此在這種情況下,請確保它已轉義且格式正確。 如果您不驗證用戶輸入,那么使用原始表達式可以為SQL注入開辟可能性

閱讀文檔: https//laravel.com/docs/5.3/queries#raw-expressions

你可以像使用它一樣

$now_str = \Carbon\Carbon::now()->format('d-m-Y');
$q->whereDate('date', '>', $now_str);

你可以試試這個,因為Carbon的now()format()方法會使它工作......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM