datetime2 的默认值

问题描述 投票:0回答:4

datetime2 的默认值是多少?

编辑:对不起,也许我解释错了,我试过插入 getDate() 并保存了这个值。

我需要知道我的 ssms 的这个字段(红色)的值是多少

EXAMPLE

sql sql-server ssms datetime2
4个回答
5
投票

SQL Server 中的所有内容都有一个默认值

NULL
,除非您另有指定。例如
DECLARE @MyDate datetime2(0);
@MyDate
的值为
NULL

至于桌子:

CREATE TABLE #Sample (MyDate datetime2(0),
                      MyDate2 datetime2(0) DEFAULT GETDATE(),
                      MyDate3 datetime2(0) DEFAULT '20000101');

MyDate
列的默认值为
NULL
MyDate2
将为
GETDATE()
(这是创建行时的当前日期和时间)。最后
MyDate3
的默认值为 2000 年 1 月 1 日。

存储过程/函数的工作方式略有不同:

CREATE PROC ReturnDate @MyDate datetime2(0), @MyDate2 datetime2(0) = NULL, @MyDate3 = '20000101' AS...

在这里,

@MyDate
没有默认值,因此它必须提供一个值才能使用该过程。然而,
@MyDate2
的默认值为
NULL
,因此不需要提供,将使用值
NULL
。如果提供了
@MyDate2
的值,则将使用该提供的值。
@MyDate3
的默认值为 2000 年 1 月 1 日,因此如果未指定参数,则将使用默认值。

编辑:值得注意的是,如果您在

NULL
语句中将
INSERT
传递给具有默认值(不是
NULL
)的表或 SP/函数,则将使用
NULL
。只有在
INSERT
/
EXEC
/etc 语句中省略列/参数时,才会使用默认值。


1
投票

如果您需要指定默认值,您应该使用该格式:'9999-12-31 23:59:59.9999999'

如果你现在需要 UTC,你应该使用 getutcdate()

https://i.stack.imgur.com/a3OiS.png


1
投票

在 datetime2 的Microsoft Documentation 中,显示 datetime2 的默认值为

'1900-01-01 00:00:00'

晚了四年,但我希望它能帮助其他人。


0
投票

SQL Server 中的默认值为 '1900-01-01 00:00:00.0000000' 但是当你从 EntityFramework 尝试时它出现 '0001-01-01 00:00:00.0000000' 并且为了实现这个你把你的代码像这样:

日期时间变量或值应分配 ''

@AssetCode nvarchar(100)='',  
@AssignedToDept nvarchar(100)='',
@AssignedToDeptDate datetime2(7)='',
@AssignedToOwnerDate datetime2(7)='',
@CreatedBy nvarchar(100)='',
@CreatedDate datetime2(7)='',
@CreatedMode nvarchar(100)='',
@Description nvarchar(max)='',
@IsClosed bit=false,
@IsDeleted bit=false,
@IsDeletedBy nvarchar(100)='',
@OwnerId nvarchar(100)='',
@PersonEmail nvarchar(100)='',
@PersonName nvarchar(100)='',
@PersonPhone nvarchar(100)='',
@Priority int=4,
@Subject nvarchar(100)='',
@TicketNumber nvarchar(450)='',
@TicketStatus nvarchar(100)='',
@TicketType nvarchar(100)='',
@UpdatedDate datetime2(7)='',
@UpdatedBy nvarchar(100)=''

set @TicketNumber='IN00000361'
INSERT INTO [dbo].[TblTickets]([TicketNumber], [TicketType], [Subject], 
[Description], [Priority], [CreatedDate], [CreatedBy], [CreatedMode], [PersonPhone], 
[PersonName], [PersonEmail], [UpdatedDate], [UpdatedBy], [AssignedToDept], 
[AssignedToDeptDate], 
[OwnerId], [AssignedToOwnerDate], [IsClosed], [IsDeleted], [IsDeletedBy], 
[TicketStatus], [AssetCode])
VALUES( @TicketNumber, @TicketType, @Subject, @Description, @Priority, 
@CreatedDate, @CreatedBy, @CreatedMode, @PersonPhone, @PersonName, 
@PersonEmail, @UpdatedDate, @UpdatedBy, @AssignedToDept, @AssignedToDeptDate,
@OwnerId, @AssignedToOwnerDate, @IsClosed, @IsDeleted, 
@IsDeletedBy, @TicketStatus, @AssetCode)

所以输出是这样的

Id  TicketNumber    TicketType  Subject Description Priority    CreatedDate CreatedBy
CreatedMode PersonPhone PersonName  PersonEmail UpdatedDate UpdatedBy   AssignedToDept
AssignedToDeptDate  OwnerId AssignedToOwnerDate IsClosed    IsDeleted
IsDeletedBy TicketStatus    AssetCode
24  IN00000361              4   1900-01-01 00:00:00.0000000
1900-01-01 00:00:00.0000000         1900-01-01 00:00:00.0000000
1900-01-01 00:00:00.0000000 0   0   

此外,当您查找记录时,查询是 从 TblTickets 中选择 *,其中 UpdatedDate = ''

© www.soinside.com 2019 - 2024. All rights reserved.