SQL:如何在创建表时指定日期格式并填写

新手上路,请多包涵

我想以“dd.mm.yyyy”格式保存日期。所以我读到 SQL 中有不同的日期格式(顺便说一下我使用 Visual Studio 和 SQL Server)。

我试过这段代码:

 CREATE TABLE APP(
    ID   INT NOT NULL,
    DT DATE FORMAT 'dd.mm.yyyy',
    ADDRESS  NVARCHAR (100) ,
    PRIMARY KEY (ID)
);

但它返回错误:

‘FORMAT’ 附近的语法不正确。

之后我想使用这段代码:

 INSERT INTO APP (ID, DT)
VALUES ('1','22.12.2016')

原文由 Mikhail_Sam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

您无需在表定义中指定格式,因为日期以二进制格式存储。

 CREATE TABLE APP(
    ID   INT NOT NULL,
    DT DATE,
    ADDRESS  NVARCHAR (100) ,
    PRIMARY KEY (ID)
);

但是,当您尝试插入该表时,服务器将尝试在插入之前将字符串转换为日期。这可能会有问题,因为它无法判断 12.11.2017 是 11 月 12 日还是 12 月 11 日。为了解决这个问题,它使用正在执行操作的用户帐户的本地化设置。

通常您会发现运行该操作的帐户设置为美国格式,月日然后年 (MDY),而您想要的是日月年 (DMY) 格式。告诉它日期部分的顺序的一种方法是使用 DATEFORMAT 设置,如下所示:

 SET DATEFORMAT dmy;

INSERT INTO APP (ID, DT)
VALUES (1,'22.12.2016')

另一种选择是使用 CONVERT 函数将字符串转换为日期,并告诉它日期格式是什么。这些格式具有 数字代码,例如德语格式的 104 如下所示:

 INSERT INTO APP (ID, DT)
VALUES (2,CONVERT(date,'22.12.2016',104))

原文由 Martin Brown 发布,翻译遵循 CC BY-SA 3.0 许可协议

它的默认设置是 yyyy-MM-dd。

不,这不对。根本没有与该字段关联的格式信息。

该值未由数据库格式化。它仅作为一个时间点返回。将该值格式化为其文本表示由从数据库中获取数据的应用程序完成。

因此,您无法在数据库中更改日期值的格式。您必须更改显示数据的位置。

原文由 Rohit yadav 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进