我正在尝试从给定日期获得星期五,星期六,星期日,星期一等一天的名字.我知道有一个内置函数返回日期名称,例如:
SELECT DATENAME(dw,'09/23/2013') as theDayName
Run Code Online (Sandbox Code Playgroud)
此SQL查询返回:
'星期一'
一切都好.但我想Month, Day and Year
单独通过.
我使用内置的DATEPART函数从日期中检索月,日和年,所以我可以将它传递给DATENAME函数:
SELECT DATEPART(m, GETDATE()) as theMonth -- returns 11
SELECT DATEPART(d, GETDATE()) as theDay -- returns 20
SELECT DATEPART(yy, GETDATE()) as theYear -- returns 2013
Run Code Online (Sandbox Code Playgroud)
现在我单独有月,日,年值,我将它传递给我DATENAME
以获取Weekname
我想要的日期:
--my SQL query to return dayName
SELECT (DATENAME(dw, DATEPART(m, GETDATE())/DATEPART(d, myDateCol1)/ DATEPART(yy, getdate()))) as myNameOfDay, FirstName, LastName FROM myTable
Run Code Online (Sandbox Code Playgroud)
这将返回不正确的日期名称.我尝试替换/ with - 以便在DATENAME函数中我的SQL查询变为:
SELECT DATENAME(dw,'09/23/2013')
--becomes
SELECT DATENAME(dw,'09-23-2013')
Run Code Online (Sandbox Code Playgroud)
但它仍然从我的SQL查询中返回错误的dayName.我在这里错过了一些东西.
请指教.
我正在研究一种在Active Directory中更新用户密码的简单解决方案.
我可以成功更新用户密码.更新密码工作正常.假设用户已将密码从MyPass1更新为MyPass2
现在,当我运行自定义代码以验证用户凭据时使用:
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "TheDomain"))
{
// validate the credentials
bool isValid = pc.ValidateCredentials("myuser", "MyPass2");
}
//returns true - which is good
Run Code Online (Sandbox Code Playgroud)
现在,当我输入一些错误的密码时,它会很好地验证:
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "TheDomain"))
{
// validate the credentials
bool isValid = pc.ValidateCredentials("myuser", "wrongPass");
}
//returns false - which is good
Run Code Online (Sandbox Code Playgroud)
现在由于一些奇怪的原因,它验证了以前的最后一个密码是MyPass1还记得吗?
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "TheDomain"))
{
// validate the credentials
bool isValid = pc.ValidateCredentials("myuser", "MyPass1");
}
//returns true - but why? we have updated password to …
Run Code Online (Sandbox Code Playgroud) 任何人都可以分享使用AuthType.Kerberos方法验证Active Directory用户的任何想法.
理想情况下,我想传递用户名和密码以使用AuthType.Kerberos方法验证用户凭据
此类验证使用LDAP连接(LdapConnection)
任何意见或反馈将非常感激.
干杯! :)