MySQL 中的 timestampdiff() 相当于 SQL Server 中的 datediff() 吗?

2023-12-27

我正在致力于将功能从 SQL Server 2000 迁移到 MySQL。

在 SQL Server 2000 中执行以下语句,输出为 109。

SELECT DATEDIFF(wk,'2012-09-01','2014-10-01') AS NoOfWeekends1

mysql 中的等效查询使用timestampdiff()代替datediff并给出输出 108。

SELECT TIMESTAMPDIFF(WEEK, '2012-09-01', '2014-10-01') AS NoOfWeekends1

我需要在 MySQL 中执行时输出匹配,因此它返回 109。


我认为这可能是由以下两件事之一引起的:

  • SQL Server 和 MySQL 实例之间的第一天被归类为一周的第一天。
  • SQL Server 和 MySQL 之间的周数是如何计算的

您指定的日期2012-09-01恰逢星期六,这似乎排除了一周的开始日,通常是星期日或星期一。

MySQL 的默认开始日期为:0 (Sunday)

要了解您的 SQL Server 一周的开始时间,您可以使用@@日期第一 http://msdn.microsoft.com/en-gb/library/ms181598.aspx通过运行这个:

select @@DATEFIRST -- default US English = 7 (Sunday)

您可以将计算更改为按天而不是按周计算,然后除以 7 以获得更准确的值,您可以根据需要舍入该值:

MySQL: SQL 小提琴演示 http://sqlfiddle.com/#!2/d41d8/45868

SELECT TIMESTAMPDIFF(DAY, '2012-09-01', '2014-10-01')/7 AS NoOfWeekends1


| NOOFWEEKENDS1 |
|---------------|
|      108.5714 |

SQL服务器:SQL 小提琴演示 http://sqlfiddle.com/#!6/d41d8/21864:

SELECT DATEDIFF(d,'2012-09-01','2014-10-01')/7.0 AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|    108.571428 |

您可以将其向上或向下舍入,具体取决于您是否想要匹配之前的结果或将其算作额外的周末。

SQL Server 似乎计算两个日期之间星期日的数量(如果这是一周的开始),如下所示这个例子小提琴 http://sqlfiddle.com/#!6/d41d8/21866我将日期范围更改为两天,周六和周日:

SELECT DATEDIFF(wk,'2012-09-01','2012-09-02') AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|             1 |

MySQL 中的相同值似乎只算作一周整整 7 天,如下所示这个演示小提琴 http://sqlfiddle.com/#!2/d41d8/45879:

SELECT TIMESTAMPDIFF(WEEK, '2012-09-01', '2012-09-02') AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|             0 |

只有经过整整 7 天后,您才能得到 1 的结果,如您在这个演示小提琴 http://sqlfiddle.com/#!2/d41d8/45880:

SELECT TIMESTAMPDIFF(WEEK, '2012-09-01', '2012-09-08') AS NoOfWeekends1

| NOOFWEEKENDS1 |
|---------------|
|             1 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 中的 timestampdiff() 相当于 SQL Server 中的 datediff() 吗? 的相关文章

  • MySQL小写自动转换

    我有多个在数据库表中写入数据的 Web 服务 我想针对特定字段自动将大写字符串转换为小写字符串 mysql 有没有执行此任务的函数 假设这是表 id name language 有时 在语言字段内 Web 服务会写入大写字符串 IT 我想直
  • mysql 详细查询字符串,如通配符

    不知道如何标题我的问题 哈哈 下面是我需要的 我的数据库中的值如下所示 test example 1 test example 2 test example TD 1 这些值的长度可以不同 test example 只是一个示例 某些值将具
  • 使用来自另一个的 SELECT 更新表,但字段为 SUM(someField)

    基本上我有这样的事情 UPDATE Table SET Table col1 other table col1 FROM Table INNER JOIN other table ON Table id other table id 问题是
  • 插入多行而不重复语句的“INSERT INTO ...”部分?

    我知道我几年前就已经这样做过 但我不记得语法了 而且由于提取了大量有关 批量导入 的帮助文档和文章 我在任何地方都找不到它 这就是我想做的 但语法不完全正确 请以前做过此操作的人帮助我 INSERT INTO dbo MyTable ID
  • 如何检查一个值是否已经存在以避免重复?

    我有一个 URL 表 但我不想要任何重复的 URL 如何使用 PHP MySQL 检查给定 URL 是否已在表中 如果您不想重复 可以执行以下操作 添加唯一性约束 use REPLACE http dev mysql com doc ref
  • 无法批量加载。操作系统错误代码 5(访问被拒绝。)

    由于某些奇怪的原因 我在执行批量插入时遇到问题 BULK INSERT customer stg FROM C Users Michael workspace pydb data andrew out txt WITH FIRSTROW 0
  • SQL Server默认字符编码

    默认情况下 Microsoft SQL Server 中数据库的字符编码集是什么 如何查看 SQL Server 中当前的字符编码 编码 In most cases SQL Server stores Unicode data i e th
  • 您可以使用 MySQL 查询来完整创建数据库的副本吗

    我有一个包含 5 个表的 MySQL 数据库的实时版本和一个测试版本 我不断使用 phpMyAdmin 将实时版本中的每个表复制到测试版本 有谁有mysql查询语句来制作数据库的完整副本吗 查询字符串需要考虑结构 数据 自动增量值以及与需要
  • mod_rewrite, .htaccess 连接mysql数据库

    我希望 htaccess 文件中的 mod rewrite 链接到 mysql 数据库以向我提供映射信息 具体来说 我使用单个代码库来托管多个站点 因此 如果用户请求图像 例如 http www example com images car
  • SQL Server 每年的第一个星期一

    如何使用 T SQL 查找 一年中的第一个星期一 这是 ngruson 发布的链接中的示例 http sqlbump blogspot nl 2010 01 first monday of year html http sqlbump bl
  • SQL Server 中的每个实体自动增量字段?

    我的数据库中有一个稳定的 食物 主键为 fooD 我有第二个表 foo Attributes 其外键引用 foo fooD 我想在 fooAttributes 表上有一个组合键 fooID attributeNumber 当我插入新属性时
  • 从 CSV 到 MySQL 的换行问题

    我正在将 csv 文件导入 MySQL 除了文件中的换行符之外 一切正常 我的 csv 行之一如下所示 42 E A R Classic Earplugs ear images ear classic jpg 5 Proven size s
  • <表值函数> 不是可识别的内置函数名称

    我收到此错误 消息 195 第 15 级 状态 10 第 1 行 fnParseName 不是可识别的内置函数名称 对于这个查询 SELECT fnParseName DOCTORFIRSTNAME DOCTORLASTNAME FROM
  • 用教义 2 DBAL 连接子查询

    我正在重构 Zend 框架2应用程序使用学说 2 5 DBAL 而不是 Zend DB ZF1 我有以下 Zend Db 查询 subSelect db gt select gt from user survey status entrie
  • 在一个查询中对同一个表进行多个 COUNT SELECT

    对于某些人来说 这可能看起来很简单 但我就是无法理解 我一遍又一遍地从同一个表中进行多个 MS SQL SELECT 查询 SELECT count Page as tAEC FROM someTable WHERE Page LIKE A
  • SQL Server 中全文搜索的奇怪行为

    我的 MyTable 带有列消息 NVARCHAR MAX ID 为 1 的记录包含消息 0123456789333444 Test 当我运行以下查询时 DECLARE Keyword NVARCHAR 100 SET Keyword 01
  • 如何将表移动到 T-SQL 中的架构中

    我想使用 T SQL 将表移动到特定架构中 我正在使用 SQL Server 2008 ALTER SCHEMA TargetSchema TRANSFER SourceSchema TableName 如果你想搬家all表到一个新的模式
  • Magento - 无法重新索引产品价格 - 外键约束失败

    我最近刚刚将我的 magento 商店从 1 4 2 升级到 1 7 0 2 升级进行得很顺利 但是当我尝试在升级后重新索引数据时 产品价格失败了 我尝试过使用php shell indexer php reindexall来自 SSH 它
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • 条件对列表的 In 子句

    有一个表 我需要通过在配对值列表中应用和条件来获取分页记录 下面是解释 假设我有一堂课Billoflading其中有各个领域 表中两个重要字段是 tenant billtype 我有一个包含值的对列表 tenant1 billtype1 t

随机推荐