免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 19200 | 回复: 7
打印 上一主题 下一主题

MySQL DateTime 字段怎么实现类似于 GetDate() 方式的默认值? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-11 14:00 |只看该作者 |倒序浏览
在家里想用 MySQL 存点儿家居数据。设计了一个表,记录什么时候买了什么东西。

可是定义 BuyDate 字段的时候遇到了问题。

BuyDate Datetime not null default now(),

这一句执行不过。

以前用 SQL Server 的时候,可以用

BuyDate Datetime not null default GetDate(),

定义日期字段。这样输入的时候就可以不输这个字段。
系统会自动把当前日期插入数据库中。

MySQL 好像没有这个功能吧?

我用的是 MySQL 5.0.18

论坛徽章:
0
2 [报告]
发表于 2006-03-11 17:04 |只看该作者
参看 timestamp 类型

论坛徽章:
0
3 [报告]
发表于 2006-03-11 20:56 |只看该作者
比如说这样一个表

DROP TABLE IF EXISTS `test`.`date`;
CREATE TABLE  `test`.`date` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `Date` date NOT NULL default '0000-00-00',
  `NewDate` timestamp NOT NULL default '0000-00-00 00:00:00',
  `Str` varchar(45) NOT NULL default '345',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='Datetime';

论坛徽章:
0
4 [报告]
发表于 2006-03-11 20:57 |只看该作者
我不能把这一行
`NewDate` timestamp NOT NULL default '0000-00-00 00:00:00',

写成

`NewDate` timestamp NOT NULL default now(),

论坛徽章:
0
5 [报告]
发表于 2006-03-11 20:59 |只看该作者
Insert 语句就必须得写成这样:

Insert into `test`.`date` values
( null,
now(),
now(),
'now()');

而不能写成

Insert into `test`.`date`(Str) values
( 'something' );

论坛徽章:
0
6 [报告]
发表于 2006-03-12 16:04 |只看该作者
如果你的表有很多字段都需要赋值当前时间的话,好像目前是只有手工用 now() 函数来做。
如果只有一个字段需要用当前时间来自动填充,那么就可以用 timestamp,这个类型自动会做 now() 的事情,所以 `NewDate` timestamp 即可。
它的特殊之处是:
1.如果一个表中同时有若干个该类型的字段,那么只有第一个该类型的字段会自动赋值当前时间。
2.每次对该条记录进行update的时候,第一个该类型字段都会被赋予当前时间,除非你在 update 语句中指定一个时间给它。
所以,它有它的用处,但未必适合你现在的要求。

论坛徽章:
0
7 [报告]
发表于 2006-03-12 21:11 |只看该作者
default value:CURRENT_TIMESHEEPT

论坛徽章:
0
8 [报告]
发表于 2006-03-12 21:28 |只看该作者
原帖由 rardge 于 2006-3-12 16:04 发表
如果你的表有很多字段都需要赋值当前时间的话,好像目前是只有手工用 now() 函数来做。
如果只有一个字段需要用当前时间来自动填充,那么就可以用 timestamp,这个类型自动会做 now() 的事情,所以 `NewDate` ti ...


你说得没错。MySQL早年就是这样设计的。

偶只是没有想到,已经发展这么久了,而且 MySQL 已经咋咋呼呼的根Oracle叫板了这么久了 。。。 居然还是这么差劲。

K, 彻底失望了。偶已经下载了 DB2 Express C 了。以后就用 DB2 了。一样是免费。就是大了点儿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP