Laravel中是否有比较年份的函数?如何判断created_at跨年度?
判断数据库记录created_at年份与当前年份是否不同的方法
直接SQL查询实现
根据你使用的数据库类型,用对应的年份提取函数与当前年份对比,直接返回布尔结果:
MySQL/MariaDB
SELECT YEAR(created_at) != YEAR(CURDATE()) AS is_different_year FROM your_table WHERE id = [记录ID];
查询返回1(代表true)或0(代表false),可直接用于条件判断。
PostgreSQL
SELECT EXTRACT(YEAR FROM created_at) != EXTRACT(YEAR FROM CURRENT_DATE) AS is_different_year FROM your_table WHERE id = [记录ID];
直接返回标准布尔值true或false。
SQLite
SELECT STRFTIME('%Y', created_at) != STRFTIME('%Y', 'now') AS is_different_year FROM your_table WHERE id = [记录ID];
返回1或0,可直接当作布尔值使用。
ORM框架实现
如果用ORM框架开发,可直接通过框架的查询构造器快速获取布尔结果:
Laravel Eloquent
直接查询判断
$isDifferentYear = YourModel::where('id', [记录ID])->whereYear('created_at', '!=', now()->year)->exists();
exists()方法直接返回true或false,完美适配if-else条件判断。
实例化后判断
$model = YourModel::find([记录ID]); $isDifferentYear = $model->created_at->year != now()->year;
Django ORM
直接查询判断
from django.utils import timezone from your_app.models import YourModel is_different_year = YourModel.objects.filter(id=[记录ID]).exclude(created_at__year=timezone.now().year).exists()
exists()返回布尔值,直接用于条件分支。
实例化后判断
from django.utils import timezone from your_app.models import YourModel model = YourModel.objects.get(id=[记录ID]) is_different_year = model.created_at.year != timezone.now().year
后端代码手动判断
如果已经把created_at字段读取到代码中,也可以直接在业务代码里对比年份:
PHP
// 假设$createdAt是从数据库取出的日期字符串或DateTime对象 $createdYear = is_string($createdAt) ? date('Y', strtotime($createdAt)) : $createdAt->format('Y'); $currentYear = date('Y'); $isDifferentYear = $createdYear != $currentYear; // 返回true/false
Python
from datetime import datetime # 假设created_at是从数据库取出的datetime对象或字符串 if isinstance(created_at, str): created_at = datetime.strptime(created_at, '%Y-%m-%d %H:%M:%S') current_year = datetime.now().year is_different_year = created_at.year != current_year
内容的提问来源于stack exchange,提问作者Amirul Yunus
相关产品推荐
相关产品推荐

