相关疑难解决方法(0)

如何使用java设置完整的日期和时间sql,而不仅仅是日期?

我正在尝试使用java在我的数据库中设置时间戳,但是在我的表中,我得到的只是日期,没有时间(即,看起来像"2010-09-09 00:00:00").

我使用我的mysql数据库中的日期时间字段(因为它似乎日期时间是比较常见的比时间戳).我设置日期的代码如下所示:

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
java.util.Date today = new java.util.Date();
java.sql.Date timestamp = new java.sql.Date(today.getTime());
ps.setDate(1, timestamp);
ps.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

如何设置日期以包含时间?

编辑: 我按照下面的说法更改了代码,并设置了日期和时间.

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
java.util.Date today = new java.util.Date();
java.sql.Timestamp timestamp = new java.sql.Timestamp(today.getTime());
ps.setTimestamp(1, timestamp);
ps.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

java mysql datetime jdbc prepared-statement

23
推荐指数
1
解决办法
2万
查看次数

如何在UTC数据库中存储UTCISO8601日期?

我有以下格式的数千个日期:

2011-10-02T23:25:42Z (又名ISO 8601 in UTC)

我应该使用什么MySQL数据类型在MySQL数据库中存储这样的ISO8601日期?例如Datetime,timestamp或其他什么?

哪个最适合比较(例如,在两个日期/时间之间获取记录)并从查询中排序结果?如果数据库非常大呢?

什么是将上述PHP字符串转换为MySQL存储的最佳方法?(我猜date_default_timezone_set('UTC');是会用的?)

php mysql date iso8601 date-format

22
推荐指数
3
解决办法
2万
查看次数

Unix时间戳VS datetime

可能重复:
datetime vs timestamp?

我有一个Mysql表,它有一个列add_date.它跟踪记录添加到数据库的日期/时间.

基于此表的查询:

  1. 显示以下格式添加记录时:2小时前,4周前,1年前等
  2. 允许用户搜索以任何日/月/年插入的记录.因此,可以允许用户选择仅查看2009年插入的记录.

在这种情况下哪个更好 - unix时间戳或日期时间?

现在我正在使用两者,但由于该表随着时间的推移会有数百万条记录,因此两列都可能会影响数据库的大小.

Unix时间戳似乎更适合2 hours在PHP中转换为以前的格式,并且它与时区无关.但是datetime具有更好的可读性,并且对特定日期/时间/年的查询似乎更容易.

你的建议?

php mysql sql

19
推荐指数
3
解决办法
1万
查看次数

删除更新条件而不删除mysql表

我有一个mysql表和数据条目:

CREATE TABLE    `invoices`.`invoices` (
    `InvoiceID` bigint(20) unsigned NOT NULL auto_increment,
    `UserID` int(10) unsigned NOT NULL,
    `Value` decimal(10,3) NOT NULL,
    `Description` varchar(4048) NOT NULL,
    `DateTime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    PRIMARY KEY    (`InvoiceID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin5;
Run Code Online (Sandbox Code Playgroud)

我想删除"更新CURRENT_TIMESTAMP"条件.我怎么能改变这张桌子?

mysql sql

19
推荐指数
2
解决办法
2万
查看次数

MySQL默认日期时间通过phpmyadmin

在现有数据库中,我是年龄列(INT).现在我需要将其设置为dob(DATETIME).

我尝试通过PHPMyAdmin这样做,将CURRENT_TIMESTAMP作为默认值,如138 upvotes回答所定义.然而,PHPMyAdmin #1067 - invalid default value for 'dob'在附加屏幕截图中抱怨:

错误截图

有人可以建议我为什么会收到这个错误以及如何解决这个问题?

mysql phpmyadmin

17
推荐指数
1
解决办法
9万
查看次数

如何从现有列中删除ON UPDATE CURRENT_TIMESTAMP?

我做了一个mysql 5.5数据库的转储并将其加载到5.6服务器.

转储将UPDATE CURRENT_TIMESTAMP添加到之前没有它的一堆列中.

我正在搜索一个ALTER TABLE语句,该语句将删除ON UPDATE CURRENT_TIMESTAMP规则而不进行任何其他更改.在我的想象中它应该是ON UPDATE NOOP或类似的东西ON UPDATE NO_CURRENT_TIMESTAMP.

ON UPDATE JUST_BE_A_NORMAL_COLUMN

我尝试使用mysql workbench中的"Clear default"选项,它与它应该做的相反 - 它给了列一个默认值!

我能够摆脱默认值ALTER TABLE t ALTER COLUMN c DROP DEFAULT,因此INSERT中的列是强制性的(就像它在转储/重新加载之前一样,就像我想要的那样)但UPDATE上的不需要的行为仍然存在.

我没有启用该explicit_defaults_for_timestamp选项.如果我刚开始新鲜,我肯定会使用这个选项,因为它看起来更加清醒.但是因为我已经在5.5中按照我想要的方式配置了列,所以我希望它们在转移到5.6时保持相同的语义.显然mysqldump还不够聪明.

在这一点上,我不确定我理解启用会产生什么影响explicit_defaults_for_timestamp.该选项是否会更改现有表的行为,还是仅更改对未来CREATE TABLE命令的解释?打开它会以某种方式帮助我修复破碎的列?

更新:

类似的问题在这里,但一个是关于创建一个新表,而不是改变现有列.实际上,这个问题是我在5.5服务器上创建表时用作指南的问题.我使用了两步过程:使用默认值0创建以禁止ON UPDATE CURRENT_TIMESTAMP,然后删除默认值.

如果没有explicit_defaults_for_timestamp,两步程序肯定不会在5.6服务器上产生正确的结果; 这是一个标志,5.6无法完美地模仿这种模式下的旧行为,或旧服务器从未做过我认为它正在做的事情.我不能确定哪个.

mysql timestamp

14
推荐指数
2
解决办法
1万
查看次数

MySQL日期时间索引不起作用

表结构:

+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| id          | int(11)  | NO   | PRI | NULL    | auto_increment |
| total       | int(11)  | YES  |     | NULL    |                |
| thedatetime | datetime | YES  | MUL | NULL    |                |
+-------------+----------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

总行数:137967

mysql> explain select * from out where thedatetime <= NOW();
+----+-------------+-------------+------+---------------+------+---------+------+--------+-------------+
| id | select_type | table       | type | possible_keys | key  | key_len …
Run Code Online (Sandbox Code Playgroud)

mysql database-design

13
推荐指数
2
解决办法
1万
查看次数

Mysql datetime DEFAULT CURRENT_TIMESTAMP错误

1. 当我在Windows上运行这个MYSQL语法时,它运行正常.

CREATE TABLE New
(
id bigint NOT NULL AUTO_INCREMENT,
timeUp datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在Linux上运行此代码时,我收到了一个错误

 #1067 - Invalid default value for 'time'
Run Code Online (Sandbox Code Playgroud)

2. 在窗口的情况下是不敏感如.新旧两者被认为是相同的.但在linux上,案例很敏感.

配置Linux

MySQL 5.5.33,phpMyAdmin 4.0.5和PHP 5.2.17

Windows的配置

MySql:5.6.11,phpMyAdmin 4.0.4.1 PHP:5.5.0

他们有什么方法可以让它们在两个系统中都很常见.或任何替代方法.谢谢阅读.

mysql linux windows

13
推荐指数
1
解决办法
5万
查看次数

存储时间戳,时间00:00:00

我想在时间组件中将时间戳存储在数据库中00:00:00.
以下代码:

$start_date = Carbon::createFromFormat('d-m-Y', $date_interval["start_date"]); 
$end_date = Carbon::createFromFormat('d-m-Y', $date_interval["end_date"]); 
Run Code Online (Sandbox Code Playgroud)

将当前时间添加到日期,当我仅提供没有时间规范的日期时.
我需要这个,因为我需要从数据库中检索内部整数,这应该是一天的开始.

存储这个"一天开始"的最佳方法是什么?

php mysql datetime php-carbon

13
推荐指数
2
解决办法
1万
查看次数

MySQL TIMESTAMP到QDateTime的时间为毫秒

如果我使用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.

mysql qt

13
推荐指数
1
解决办法
2533
查看次数