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

标签 sql sql-server date

我想以“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)
);

但它返回错误:

Incorrect syntax near 'FORMAT'.



之后我想使用这个代码:
INSERT INTO APP (ID, DT)
VALUES ('1','22.12.2016')

最佳答案

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

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 将字符串转换为日期。函数并告诉它日期格式是什么。格式有 numeric codes像德语格式的 104 像这样:
INSERT INTO APP (ID, DT)
VALUES (2,CONVERT(date,'22.12.2016',104))

关于SQL:如何在创建表时指定日期格式并填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47178740/

相关文章:

r - 将日期范围更改为一系列日期(从宽到长)

sql - VBA Access 在保存新记录之前需要获取自动编号

sql-server - SQL Server - JOIN 未在 Entity Framework 生成的查询中使用最佳顺序

perl 从日期中减去一个月

c# - 从 Linq-to-SQL 读取一行

sql - 如何在 SQL Server 2005 中查找表中多列的总和?

PHP 获取日期的当前月份

sql - 查询返回具有匹配值的连续行

sql - 具有多个搜索词的 SQL 查询

php - 如何在分页中为每个页面拉取和显示范围(最小-最大)数据?