sql server日期格式

sql server日期格式,sql,sql-server,Sql,Sql Server,如何获取此格式的日期:12/31/9999 11:59:59 PM 我正在这样尝试,但没有找到任何合适的格式解决方案 select convert(varchar(100), getdate(), 103) 编辑: SELECT DISTINCT U.FirstName,U.LastName, U.UserId, dbo.GetCity(ES.UserID) as City, dbo.GetState(ES.UserID) AS State, dbo.GetSchool(ES.

如何获取此格式的日期:
12/31/9999 11:59:59 PM

我正在这样尝试,但没有找到任何合适的格式解决方案

select convert(varchar(100), getdate(), 103)
编辑:

SELECT DISTINCT U.FirstName,U.LastName, U.UserId,    
dbo.GetCity(ES.UserID) as City, dbo.GetState(ES.UserID) AS State,    
dbo.GetSchool(ES.UserID) as School, R.RoleName as RoleName    
FROM [3rdi_EventParticipants] as EP    
Inner Join [3rdi_EventSignup] as ES on EP.SignUpID=ES.SignUpID    
Inner Join Users U on ES.UserID= U.UserId
Inner Join [UserRoles] UR ON U.UserId=UR.UserId
Inner Join [Roles] R on UR.RoleID= R.RoleID        
WHERE EP.PlaceStatus in(4, 8, 3)and EP.EventID=@ItemID and UR.RoleID NOT IN(0, 1, 2, 45, 27) 
and UR.ExpiryDate>(select CONVERT(varchar(10),getdate(),101) + ' ' + CONVERT(varchar(10),getdate(),108)+ ' ' +  right(convert(varchar(30), getdate(), 9), 2))

你所要求的格式不是一个

您可能可以通过对
CONVERT
的两个调用和一个case表达式来构造它:

select
   CONVERT(varchar(10),getdate(),101) + ' ' +
   CONVERT(varchar(10),getdate(),108) + ' ' +
   CASE WHEN DATEPART(hour,getdate()) >= 12 THEN 'PM' ELSE 'AM' END
(或者,根据偏好,将日期时间值的格式设置留给调用SQL Server的任何人)


如果要执行有意义的日期比较,则希望双方都是日期时间,而不是字符串(或者如果要使用字符串,请使用121等格式,其中字符串比较是有意义的)

为什么
UR.ExpiryDate
是varchar,而不是datetime列


假设您的区域设置能够自动将指定的格式转换为日期时间值,那么最好将查询的最后一行写为:

and CONVERT(datetime,UR.ExpiryDate)>getdate()

你所要求的格式不是一个

您可能可以通过对
CONVERT
的两个调用和一个case表达式来构造它:

select
   CONVERT(varchar(10),getdate(),101) + ' ' +
   CONVERT(varchar(10),getdate(),108) + ' ' +
   CASE WHEN DATEPART(hour,getdate()) >= 12 THEN 'PM' ELSE 'AM' END
(或者,根据偏好,将日期时间值的格式设置留给调用SQL Server的任何人)


如果要执行有意义的日期比较,则希望双方都是日期时间,而不是字符串(或者如果要使用字符串,请使用121等格式,其中字符串比较是有意义的)

为什么
UR.ExpiryDate
是varchar,而不是datetime列


假设您的区域设置能够自动将指定的格式转换为日期时间值,那么最好将查询的最后一行写为:

and CONVERT(datetime,UR.ExpiryDate)>getdate()


您确定要在数据库中进行格式化吗?通常更好的地方是在向用户显示数据之前。SQL Server的转换或强制转换手册中根本没有列出这种格式,在过去几分钟中,我们一直在尝试这种格式。我不确定你是否能进行这种操作。使用日期做什么?我很感兴趣,ExpiryDate字段是VARCHAR吗?以字符串形式进行日期比较似乎很奇怪…@Dems:u不,这是datetime格式。那么我不确定您的转换点是什么?为什么不直接使用“And UR.ExpiryDate>getDate()”?您确定要在数据库中进行格式化吗?通常更好的地方是在向用户显示数据之前。SQL Server的转换或强制转换手册中根本没有列出这种格式,在过去几分钟中,我们一直在尝试这种格式。我不确定你是否能进行这种操作。使用日期做什么?我很感兴趣,ExpiryDate字段是VARCHAR吗?以字符串形式进行日期比较似乎很奇怪…@Dems:u不,这是datetime格式。那么我不确定您的转换点是什么?为什么不直接使用“And UR.ExpiryDate>getDate()”?您可以添加
+''+right(convert(varchar(30),getDate(),9),2)
来获取AM/PM@NoviceToDotNet-补充-但你明白为什么大多数人现在会建议在其他地方进行这种格式化吗?不,我不知道,但我的查询是我需要从DB获取它的地方,我向您展示了我的查询,然后请告诉我我能做什么更好?请参见上面的编辑部分。@NeariorToDotnet-看到了您的完整查询,您到底为什么要使用字符串比较作为到期日期?对于有意义的日期比较,您选择的格式是完全错误的-
选择CASE WHEN'12/31/1996'>'02/28/2011',然后1 ELSE 0 END
返回1。不,DB中的日期格式与我要求您告诉我的相同。Si事先我知道日期格式,所以为什么我要使用case,请做一个示例查询。您可以添加
+''+右(convert(varchar(30),getdate(),9),2)
来获取AM/PM@NoviceToDotNet-补充-但你明白为什么现在大多数人会建议在其他地方使用这种格式吗?不,我不知道?,但我的查询是我需要从数据库中获取它的地方,我向您展示我的查询,然后请告诉我我能做什么更好?请参见上面的编辑部分。@NearketToDotnet-看到您的完整查询后,您到底为什么要使用字符串比较来确定到期日期?对于有意义的日期比较,您选择的格式是完全错误的-
选择CASE WHEN'12/31/1996'>'02/28/2011',然后1 ELSE 0 END
返回1。不,DB中的日期格式与我要求您告诉我的相同。Si提前我知道日期格式,所以为什么我要去的情况下,请做一个样本查询。