mysql - 我如何合并不同的日期类型
问题描述
我正在尝试使用下表中的默认值COALESCE()
来获取最低的非日期:NULL
NOW()
date1 (timestamp) | date2 (date) | date3 (timestamp)
<null> <null> 2015-02-04 21:29:05
我试过的查询是:
SELECT coalesce(date1, timestamp(date2), date3, now()) as edited
FROM backupDB
解决方案
@Barmar - 不,我无法重现 SQLFiddle 中的错误,我真正拥有的架构和值破坏了他们的 Java。
解决了
我必须深入挖掘表的构建方式并找到正确的模式。这是我在数据库中真正拥有的(尽管 PHPStorm 将“0000-00-00”显示为NULL
):
CREATE TABLE backupDB (
date1 TIMESTAMP NULL,
date2 DATE DEFAULT '0000-00-00',
date3 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);
INSERT INTO backupDB (date1, date2, date3) VALUES
(NULL, '0000-00-00', '2015-02-04 21:29:05');
所以必要的查询看起来更像这样:(随意批评和改进)
SELECT
coalesce(date1, if(date2= '0000-00-00', null, timestamp(date2)), date3, now()) as edited
FROM backupDB
推荐阅读
- javascript - TypeError: [c++ 插件类] 不是构造函数
- javafx - javafx - 如果登录详细信息正确,登录函数将执行“else”块,但当详细信息错误时没有任何反应
- c++ - 如何计算文件中的生物数量?
- php - 购买产品(结帐页面)后保存到数据库 woocommerce 的位置在哪里?
- r - 如何修复美国地图中的重叠多边形?
- python - 按条件连接列表中的字符串
- javascript - 表单变量不通过 POST
- python - 从 BeautifulSoup 的表中排除跨度类
- python-3.x - 如何识别缩写/首字母缩略词并在 spaCy 中扩展它们?
- c# - 在 .NET Core 2.0 WebAPI 的 azure webapp 中加载应用程序设置