首页 > 解决方案 > MYSQL 查询转换为 SQLSERVER

问题描述

大家好,目前正在从事 CODEIGNITER 项目,该项目已从 MYSQL 迁移到 SQL SERVER 2014,关于 SQL SERVER 2014,我只知道基础知识。

我从大约 2 周开始就遇到了问题,我总是尝试搜索和搜索以解决问题,但此时我正在花费太多时间试图找到解决此问题的方法。

我在 MYSQL 上有以下查询

SELECT 
  *, 
  UNIX_TIMESTAMP(date) as timestamp 
FROM (`module_items`) 
JOIN `module_items_news2` 
  ON `item_id` = `id` 
WHERE 
  `module_id` = '$module_id' 
  AND $this->site = 1 
GROUP BY 
  date_format(date, '%Y%m') 
ORDER BY 
  `date` DESC

上面的代码适用于 MySQL 数据库。

我正在尝试将其转换为 SQL SERVER,但我在 SQL SERVER 上没有 UNIX_TIMESTAMP 函数。创建函数并尝试修改查询后

DECLARE @module_id VARCHAR(1)
SET @module_id = 3
SELECT *,dbo.UNIX_TIMESTAMP(date) as timestamp 
FROM module_items JOIN module_items_news2 ON item_id = id WHERE module_id = 
@module_id 
GROUP BY date_format(date, '%Y%m') 
ORDER BY date DESC

现在我得到

'date_format' is not a recognized built-in function name.

我该如何进行才能使其正常工作?

亲切的问候。

标签: mysqlsqlsql-server

解决方案


您不应该DATE_FORMAT()在任何一个版本中使用。利用

GROUP BY YEAR(date), MONTH(date)

在两个数据库中。


推荐阅读