1. 当我在Windows上运行此MYSQL语法时,它正常运行:
CREATE TABLE New
(
id bigint NOT NULL AUTO_INCREMENT,
timeUp datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)
但是,当我尝试在Linux上运行此代码时,出现错误:
#1067 - Invalid default value for 'time'
2. 在Windows上,大小写不敏感。New
并且new
都被认为是相同的。但是在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 5.6中添加了 DEFAULT CURRENT_TIMESTAMP
对 DATETIME
(数据类型)的支持。
在5.5和更早版本中,这仅适用于 TIMESTAMP
(数据类型)列。
可以使用 BEFORE INSERT
5.5中的触发器为列分配默认值。
DELIMITER $$
CREATE TRIGGER ...
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
IF NEW.mycol IS NULL THEN
SET NEW.mycol = NOW();
END IF;
END$$
区分大小写(针对存储在列中的值的查询)是由于
collation
该列所使用的。结尾的排序规则
_ci
不区分大小写。例如
latin1_swedish_ci
,不区分大小写,但是
latin1_general_cs
区分大小写。
来自的输出 SHOW CREATE TABLE foo
将显示字符类型列的字符集和排序规则。在每个列级别指定。当新列定义未指定字符集时,在表级别指定的“默认”适用于添加到表中的新列。
更新
Kaii指出,我对“区分大小写”的回答涉及存储在列中的值,并且查询是否将从包含的值的列中"New"
返回值将返回谓词like "t.col = 'new'"
。
请参见Kaii关于 标识符 (例如表名)在Windows上与Linux上的处理方式不同(默认情况下)的答案。
但以下内容: 只是管用。 日期的大小写相同。
问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。
问题内容: 我无法找出(谷歌,阅读mysql参考手册)如何 在几秒钟内在 MySQL中获取 DATETIME的 值。 我不是要从日期时间中提取秒,而是将其转换为秒。 问题答案: 如果要使两个DATETIME值之间存在差异,请使用 : TIMESTAMPDIFF(单位,datetime_expr1,datetime_expr2) 返回,其中和是日期或日期时间表达式。一个表达式可以是日期,另一个可以是
问题内容: 我有一个包含表的MySQL数据库。 但是,我找不到在Java中将其作为Java中某种对象返回的方法。 我可以打电话给它,它会返回,但这并不好,因为没有办法比较字符串上的日期等。 我也可以打电话,但这根本不返回时间。 问题答案: 您需要使用Thomas的注释中建议的getTime()或getTimestamp()方法。举个例子… 说出要查询的表格,如下所示: 您可以这样做: 如果要使用J
问题内容: 是否可以使用NOW()将默认时间添加为10分钟? 我已经尝试过类似的方法: 但是,它不起作用。 问题答案: 我不认为你可以做到这一点。 在MySQL的文件指出: 数据类型规范中的DEFAULT value子句指示列的默认值。除一个例外,默认值必须为常数;否则为0。它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为诸如NOW()或CURRENT_DATE之类的函数的值。唯一
主要内容:YEAR 类型,TIME 类型,DATE 类型,DATETIME 类型,TIMESTAMP 类型MySQL 中有多处表示日期的数据类型: YEAR、 TIME、 DATE、 DTAETIME、 TIMESTAMP。当只记录年信息的时候,可以只使用 YEAR 类型。 每一个类型都有合法的取值范围,当指定确定不合法的值时,系统将“零”值插入数据库中。 下表中列出了 MySQL 中的日期与时间类型。 类型名称 日期格式 日期范围 存储需求 YEAR YYYY 1901 ~ 2155 1 个字