如何以此格式获取日期: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))
答案 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()