如何在mySQL中将当前日期设置为默认日期

时间:2014-02-25 07:03:02

标签: php mysql sql sql-server date

我有一个表Members,其中DayJoin列为varchar。如果用户没有输入该字段的值,我想设置列DayJoin的默认值应该是当前日期。

在MSSQL Server中我写了这句话:

CREATE TABLE Members
(
ID int identity (1,1) primary key,
Email varchar(50),
Password Varchar(50),
Role Varchar(50) default 'Member',
DayJoin varchar(50) DEFAULT Convert(varchar, GETDATE(),103),
LastLogin varchar(50)DEFAULT Convert(varchar, GETDATE(),103),
FName varchar(50),
LName varchar(50),
Phone varchar(50),
DOB varchar(50),
Gender varchar(50),
IDcard varchar(50),
Address varchar(50),
City varchar(50),
Job varchar(50),
Avatar varchar(50) default 'images/noavatar.gif'
)

该语句获取当天的值并将其格式化为(dd / mm / yyyy)。但是当我在mySQL中运行类似的那个时,它无法正常工作

CREATE TABLE `NewTable` (
`ID`  int UNSIGNED NULL AUTO_INCREMENT ,
`Email`  varchar(50) NULL ,
`Password`  varchar(50) NULL DEFAULT '' ,
`Role`  varchar(10) NULL ,
`DayJoin`  varchar(10) NULL DEFAULT 'CURRENT_TIMESTAMP' ,
`LastLogin`  varchar(10) NULL DEFAULT 'date_format(now(),%Y/%m/%d)' ,
`Firstname`  varchar(50) NULL ,
`Lastname`  varchar(50) NULL ,
`Phone`  varchar(20) NULL ,
`DOB`  varchar(10) NULL ,
`Gender`  varchar(20) NULL ,
`IDcard`  varchar(20) NULL ,
`Address`  varchar(50) NULL ,
`City`  varchar(50) NULL ,
`Job`  varchar(50) NULL ,
`Avatar`  varchar(50) NULL DEFAULT 'images/noavatar.gif' ,
PRIMARY KEY (`ID`)
)
ENGINE=ARCHIVE
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_unicode_ci
;

我得到的回答是这样的; "错误的默认值"

有谁知道问题是什么?

4 个答案:

答案 0 :(得分:1)

改为使用DATETIME类型:

`DayJoin` DATETIME DEFAULT CURRENT_TIMESTAMP

答案 1 :(得分:0)

它会将错误称为“'DayJoin'的无效默认值”

使用'DayJoin'的datetime或timestamp数据类型

`DayJoin`  TimeStamp NULL DEFAULT 'CURRENT_TIMESTAMP' ,

答案 2 :(得分:0)

删除代码中'CURRENT_TIMESTAMP'周围的引号,并使用TIMESTAMP数据类型。它应该如下:

`DayJoin`  TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,

答案 3 :(得分:0)

尝试更改您的DayJoin数据类型

`DayJoin` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

`DayJoin`  TimeStamp NULL DEFAULT CURRENT_TIMESTAMP
相关问题