INSERT 期间的 MSSQL 格式日期和时间

MSSQL format date and time during INSERT

如何在将日期和时间插入我的 MSSQL 查询时设置日期和时间的格式?

我知道之前有人问过这个问题,但我不确定为什么在将当前日期和时间插入到我的数据库时,我在理解如何格式化当前日期和时间时遇到了这么多麻烦。

最初以下 INSERT 查询有效,但现在 我想添加当前日期和时间,并将分钟作为最后一个字符。没有秒或毫秒

INSERT INTO Form_Submission (ID,Submission_Date,Status)
VALUES  ('23', CURRENT_TIMESTAMP, 'Open');

我要找的格式是:2015-04-08 13:42

您可以像这样将 LEFTCONVERT 与样式 120 一起使用

INSERT INTO     Form_Submission (ID,Submission_Date,Status)
 VALUES          ('23', CONVERT(DATETIME,LEFT(CONVERT(VARCHAR(40),CURRENT_TIMESTAMP,120),16)), 'Open')

有关与 Convert 一起使用的不同样式的更多详细信息,请参阅 here

如果您尝试插入 DATETIMESMALLDATETIME 字段,那么这将起作用:

CONVERT(SMALLDATETIME, GETDATE())

CONVERT(SMALLDATETIME, CURRENT_TIMESTAMP) 如果你愿意的话。

所以你的代码是:

INSERT INTO     Form_Submission (ID,Submission_Date,Status)
VALUES          ('23', CONVERT(SMALLDATETIME, GETDATE()), 'Open')

关键是你不应该在插入数据库时​​格式化日期和时间,你应该只在输出时(显示时)格式化它们。 SMALLDATETIME 提供您似乎想要的粒度级别(精确到最近的分钟)。

在此处查看 MSDN 文档:GETDATE and SMALLDATETIME

也许你可以使用FORMAT() T-SQL函数:

INSERT INTO     Form_Submission (ID,Submission_Date,Status)
VALUES          ('23', FORMAT(CURRENT_TIMESTAMP, 'yyyy-MM-dd hh:mm'), 'Open')