Microsoft SQL Server 2016(RTM) - 13.0.1601.5(X64)
版权所有(c)Windows 10 Pro 6.3(Build 14393)上的Microsoft Corporation Express Edition(64位)
我正在使用内部getdate()
函数自动填充DateCreated
数据类型的DATE
列。
事实上,当输入新产品时,我可以看到以MM/dd/YYYY
格式(即3/18/2017
)格式创建日期值。
为什么?有没有办法强制getdate()
使用ISO 8061格式?
CREATE TABLE [dbo].[Products]
(
[ID] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
[Description] NVARCHAR (500) NOT NULL,
[IsDeleted] BIT NOT NULL,
[IsApproved] BIT NOT NULL,
[CategoryID] INT NOT NULL,
[UserID] NVARCHAR (MAX) NOT NULL,
[DateCreated] DATE DEFAULT (getdate()) NULL,
[DateExpire] DATE CONSTRAINT [CONSTRAINT_NAME] DEFAULT (dateadd(month,(1),getdate())) NULL,
[DateLastModified] DATE DEFAULT (getdate()) NULL,
CONSTRAINT [PK_dbo.Products]
PRIMARY KEY CLUSTERED ([ID] ASC),
CONSTRAINT [FK_dbo.Products_dbo.Categories_CategoryID]
FOREIGN KEY ([CategoryID]) REFERENCES [dbo].[Categories] ([ID])
);
答案 0 :(得分:7)
date
和datetime
数据类型的值不以sql server格式存储。如果您希望以不同的格式查看日期,则可以在转换为varchar
(或nvarchar
,nchar
,{{1时操纵日期和日期时间数据类型的显示方式使用一些内置函数的数据类型。
通常使用convert()
styles
char
返回:select convert(varchar(10),getdate(),120)
在sql server 2012+中,您可以使用format()
2017-03-19
返回:select format(getdate(),'yyyy-MM-dd')
但2017-03-19
可能会慢一点,请看一下:format()
is nice and all, but… - Aaron Bertand
答案 1 :(得分:0)
未在日期数据类型中存储的数据中设置格式。
但是,您可以设置用于直观显示日期的格式。
SET DATEFORMAT {格式| @format_var}
-- For example set date format to day/month/year.
SET DATEFORMAT dmy;
GO
format | @format_var
是日期部分的顺序。有效参数为mdy
,dmy
,ymd
,ydm
,myd
和dym
。
ydm
,date
和datetime2
数据类型不支持datetimeoffset
。
只是为了增加清晰度,这与日期和时间样式格式不同,如varchar
,例如:
CONVERT(VARCHAR(20), GETDATE(), 100)