是否有MySQL函数可用于将Unix时间戳转换为人类可读日期?我有一个字段用于保存Unix时间,现在我想为人类可读日期添加另一个字段.
我需要在mysql中存储时间和日期.所以我使用了NOW()功能.但我不知道我应该使用什么类型列 im phpmyadmin.应该注意的是,NOW()返回时间和日期如下:
2014-11-11 12:45:34
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案,我可以使用分隔符来分隔日期和时间(2014-11-11和12:45:34),然后分别将它们存储在DATE类型和TIME类型中.或者我可以使用VARCHAR类型将它们存储在一列中.但我认为这些方式并不标准.什么是存储日期和时间的标准类型?
这是我的查询:(我也不知道为什么NOW()功能不起作用)
INSERT INTO table (timedate) VALUES (NOW())
Run Code Online (Sandbox Code Playgroud) 如果我使用QSqlTableModel访问MySQL数据库,我可以使用以下代码转换TIMESTAMP字段:
QDateTime dateTime = index(section, column).data().toDateTime();
QString str = dateTime.toString("yyyy-MM-dd hh:mm:ss.zzz");
Run Code Online (Sandbox Code Playgroud)
所以str显示,即2014-06-22 22:11:44.221.但我想使用QSqlQuerry访问数据库,所以我这样做:
QDateTime dateTime = query.value(column).toDateTime();
str = dateTime.toString("yyyy-MM-dd hh:mm:ss.zzz");
Run Code Online (Sandbox Code Playgroud)
但现在我错过了毫秒,str显示2014-06-22 22:11:44.000.看到毫秒的正确方法是什么?
如果我这样做,str = query.value(column).toString();那么我得到2014-06-22T22:11:44.
我正在使用Pentaho数据集成(表输入步骤)从MySQL服务器获取数据.一些字段属于'Timestamp'类型,Pentaho因为时间戳为NULL(00:00:00.000000)而不断喷出错误.
我zeroDateTimeBehavior=convertToNull在参数中添加了一个应该处理坏时间戳的参数,但是它将我的所有 Timestamp数据转换为NULL.
我认为可能发生这种情况的一个原因是因为我的一些"好"数据被表示为,例如,2013-03-14 04:55:09.000000.虽然大部分日期都是"好数据",但小数秒(.000000)可能被zeroDateTimeBehavior参数解释为"坏"数据,因此被转换为NULL.
我不确定这是不是为什么会发生这种情况,但是有人可以给我一些关于其他可能原因的见解以及世界上我如何阻止这种情况?也许转换成字符串可能是一个好主意,但我不知道如何去做这件事.
建议?
我在查找Node.js,knex和MySQL(通过Bookshelf)常见的日期格式时遇到了一些麻烦.
我使用Knex架构构建器设置了一个表:
knex.schema.createTableIfNotExists("examples", function (table) {
...
table.dateTime("some_datetime");
})
Run Code Online (Sandbox Code Playgroud)
这将DATETIME在MySQL中创建一个类型的列.
我有一个代表这个的Bookshelf模型(在这里省略了所有的样板文件),我尝试使用内置Date.now()的值:
exampleModel.save({
some_datetime: Date.now()
})
Run Code Online (Sandbox Code Playgroud)
在Knex中打开调试后,我看到查询实际上是在尝试插入一个毫秒的纪元时间戳("......"为简洁起见):
{ ...
bindings: [ 1485644012453, ... ],
sql: 'update `examples` set `some_datetime` = ? where `id` = ?' }
Run Code Online (Sandbox Code Playgroud)
但这是不正确的,因为MySQL希望你FROM_UNIXTIME在这种情况下使用,因此数据库中的结果日期当然是好的0000-00-00 00:00:00.
我应该在这做什么才能使这一切保持一致?
Date.now()?我在这里找不到共同点.我的直觉说dateTime在使用Knex,Date.now()在Node中,DATETIME在MySQL中,但这是不正确的.
只是要清楚:这个问题不一定集中在什么是哲学正确的-此刻,我居然无法弄清楚如何存储日期/数据库倍一切.我正在寻找一个有效的组合,语义正确只会是一个奖励.
这听起来很傻,但对于我的生活,我无法理解.我尝试了一切.
问题是我无法弄清楚如何将我的日期字符串放入我的MySQL表中......我首先要转换为Unix来解释输入格式的变化.
$_POST['date'] 是这种格式:19-1-2013 4:43:32
$datestr= strtotime($_POST['date']);
echo $datestr;
$sql = "INSERT INTO `calendar` (`date`, `title`, `event`) VALUES ('FROM_UNIXTIME(".$datestr.")', '".mysql_real_escape_string($_POST['title'])."', '".mysql_real_escape_string($_POST['desc'])."')";
$query = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的最新内容,我仍然在DATETIME字段中获得全零.
拜托,我做错了什么?