【问题标题】:How to set current date as default date in mySQL如何在 mySQL 中将当前日期设置为默认日期
【发布时间】:2014-03-27 05:58:03
【问题描述】:

我有一个表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
;

我收到类似这样的回复; “默认值错误”

有谁知道问题出在哪里?

【问题讨论】:

  • 试试:DayJoin TIMESTAMP NULL DEFAULT 'CURRENT_TIMESTAMP'
  • 可以分享一下错误信息吗?
  • 这是我的错误。我使用 Navicat 连接到数据库。抱歉,我没有足够的东西来发布图片。您可以通过链接查看i.upanh.com/viafev 问题1:我已经尝试过约会。 datetime, TIMESTAMP ...但它不起作用。我显示同样的错误... 问题 2:我想将其格式化为 dd/mm/yy 而不是 yyyy/mm/dd 并使用斜杠 (/) 而不是 (-)

标签: php mysql sql sql-server date


【解决方案1】:

改用DATETIME 类型:

`DayJoin` DATETIME DEFAULT CURRENT_TIMESTAMP

【讨论】:

  • 这是我的错误。我使用 Navicat 连接到数据库。抱歉,我没有足够的东西来发布图片。您可以通过链接查看i.upanh.com/viafev 问题1:我已经尝试过约会。 datetime, TIMESTAMP ...但它不起作用。我显示同样的错误... 问题 2:我想将其格式化为 dd/mm/yy 而不是 yyyy/mm/dd 并使用斜杠 (/) 而不是 (-)
【解决方案2】:

它会给出错误“'DayJoin'的默认值无效”

对“DayJoin”使用日期时间或时间戳数据类型

`DayJoin`  TimeStamp NULL DEFAULT 'CURRENT_TIMESTAMP' ,

【讨论】:

    【解决方案3】:

    删除代码中“CURRENT_TIMESTAMP”周围的引号并使用 TIMESTAMP 数据类型。它应该是这样的:

    `DayJoin`  TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    

    【讨论】:

    • 我无法删除,我使用 Navicat 解决 SQL Query。 CURRENT_TIMESTAMP 仅适用于时间戳。我用过datetime,但没有成功...
    【解决方案4】:

    试试这个改变你的DayJoin数据类型

    `DayJoin` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    

    `DayJoin`  TimeStamp NULL DEFAULT CURRENT_TIMESTAMP
    

    【讨论】:

    • 我已经成功使用DayJoin TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。但它只允许一列使用 TIMESTAMP。如何将 Lastlogin 列作为相同的默认值。以及如何格式化它。我不想在其中占用小时、分钟和秒。
    • 没什么,它有效...但我想删除其中的时间,我的意思是我只想花一天月年,我不想花小时分钟和秒.我该怎么办?
    • 你可以使用日期作为数据类型@user3349931
    • 我试过了。如果使用(日期)默认的(CURRENT_TIMESTAMP)将不起作用。错误同上。
    • 我已经使用 date_format(now(),"%Y-%m-%d") 将 Column 类型的日期设为默认值。我尝试执行查询 "Select date_format(now(),"%Y-%m-%d");"在mysql上,它可以工作。但默认情况下它显示为 false。
    猜你喜欢
    • 2014-05-06
    • 1970-01-01
    • 2011-04-09
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多