sql server日期格式

时间:2011-02-28 08:23:54

标签: 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.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))

1 个答案:

答案 0 :(得分:4)

您要求的格式不是supported one

您可以通过两次调用CONVERT和一个案例表达式来构建它:

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之类的格式,其中字符串比较是有意义的。)< / p>

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


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

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