SQL Server [SQL服务器]列名无效:'2022年12月20日23时59分'

mec1mxoz  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(159)

我将MySQL数据库迁移到了SQL Server 2019。
与MySQL配合良好:

**$now = Carbon::now()->format('Y-m-d 23:59:00');

->leftJoin('abonnements', function ($join) use ($now) {
                $join->on('abonnements.client_id', '=', 'clients.id')
                ->whereRaw(DB::raw("NOT EXISTS (
                SELECT 1 FROM abonnements a1
                where a1.date_fin_tolerance >= \"{$now}\" and a1.date_debut <= \"{$now}\"
                and a1.client_id = clients.id
                AND a1.created_at > abonnements.created_at
              )"**

数据库状态[42 S22]:[Microsoft][用于SQL Server的ODBC驱动程序17][SQL Server]无效的列名:'2022年12月20日23:59:00'。(SQL:从[客户]中选择计数(*)作为[订阅]上的左加入[订阅]的聚合。[客户ID] = [客户].[ID]且不存在(\r\n从订阅a1\r\n中选择1,其中a1.date_end_tolerance〉=转换(“2022-12-20 23:59:00”作为日期时间)且a1.start_date〈=转换(“2022-12-20 23:59:00”作为日期时间)\r\n且a1.client_id = customers.id\r\n且a1.created_at〉订阅.创建时间\r\n)和[订阅].[结束容差日期]〉= 2022年12月20日23:59:00和[订阅].[开始日期]〈= 2022年12月20日23:59:00在[订阅类型]上离开加入[订阅类型].[订阅类型ID] = [订阅类型].[ID],其中[客户].[删除时间]为空)”
为什么会将值与列混淆

vu8f3i0k

vu8f3i0k1#

双引号用于标识符(例如:列名或表名)。使用单引号将日期时间值作为字符串传递。

相关问题