首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -用于更改日期时间的函数

问MySQL -用于更改日期时间的函数
EN

Stack Overflow用户
提问于 2016-03-02 08:12:27
回答 3查看 252关注 0票数 1

我有一个具有datetime类型的列permission_to,它的值为:2016-12-31 00:00:00,我想将这个值更改为:2016-12-31 23:59:59。我不需要更新行,因为我需要原始值,但我希望在查询中使用修改后的值来与另一列进行比较,如:

代码语言:javascript
复制
SELECT
  d.id_machine
  IF(
    d.permission_from < '2016-01-01 00:00:00',
    '2016-01-01 00:00:00',
    d.permission_from
  ) AS date_from,

  IF(
    '(HERE I NEED FUNCTION TO CHANGE DATETIME FROM 2016-12-31 00:00:00 TO 2016-12-31 23:59:59) > 2016-02-02 23:59:59',
    '2016-02-02',
    (AGAIN THE SAME FUCTION)
  ) AS date_to
FROM tbl_decision AS d

在没有更新的情况下,是否有任何MySQL函数可以在datetime中修改时间?

EN

回答 3

Stack Overflow用户

发布于 2016-03-02 08:30:25

当我们处理“结束日期”时,我们通常使用后天,然后使用“小于”操作与此日期进行比较。

例子:不是2016-12-31,我们使用的是2017-01-01,当我们使用< so,我们把2016年一直到最后一刻。

代码语言:javascript
复制
SELECT
  d.id_machine
  IF(
    d.permission_from < '2016-01-01 00:00:00',
    '2016-01-01 00:00:00',
    d.permission_from
  ) AS date_from,

  IF(
    DATE_ADD(d.permission_to,INTERVAL 1 DAY) > 2016-02-02 23:59:59',
    '2016-02-02',
    DATE_ADD(d.permission_to,INTERVAL 1 DAY)
  ) AS date_to
FROM tbl_decision AS d
票数 2
EN

Stack Overflow用户

发布于 2016-03-02 08:17:43

您可以在HOUR_MINUTE函数中使用DATE_ADD格式。

代码语言:javascript
复制
DATE_ADD(permission_to, INTERVAL '23:59' HOUR_MINUTE)
票数 1
EN

Stack Overflow用户

发布于 2016-03-02 08:40:41

如果permission_to的类型为datetime,但总是保存类似于2016-12-31 00:00:00的值,我将将其存储为date列而不是datetime。

无论如何,我会将您的查询写成如下:

代码语言:javascript
复制
SELECT
  d.id_machine,
  greatest(d.permission_from, '2016-01-01') AS date_from,
  least(d.permission_to + INTERVAL 1 DAY, '2016-02-02') AS date_to
FROM
  tbl_decision AS d

如果您想获得一天的所有记录,这将稍微改变您的逻辑,而不是这样:

代码语言:javascript
复制
where
  datetimecolumn>='2016-01-01 00:00:00'
  and datetimecolumn<='2016-01-01 23:59:59'

(如果日期时间是2016-01-01 23:59:59.001,会发生什么情况?MySQL现在支持微秒!)就用这个吧:

代码语言:javascript
复制
where
  datetimecolumn>='2016-01-01 00:00:00'
  and datetimecolumn<'2016-01-02 00:00:00'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35741678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档