Delphi7:获取SQL服务器系统日期和时间格式

问题描述:

我想获得区域datetime格式为SQL Server。我在使用Delphi7这里。我的情况是如下:Delphi7:获取SQL服务器系统日期和时间格式

如果我的服务器的区域日期格式(例如)yyyymmdd和客户端的SQL服务器为mm/dd/yyyy(或任何其他有效的日期格式),比生成应包含正确的日期格式的查询。

注:我已经写在Delphi7的其中设置默认格式 MSSQL,将读取服务器的区域日期格式太代码。并将服务器的区域日期格式转换为MSSQL日期格式。

+3

不,查询应该包含可绑定参数而不是文本值。 – Victoria

+0

我有用** delphi **编写的代码,它为MSSQL设置了默认格式。它会将服务器的区域日期格式转换为MSSQL日期格式。 –

+5

我仍然错失了为什么要使用文本值进行操作的真正原因。为什么要构建带有日期和时间值表示为文本的SQL命令? – Victoria

如果我的服务器的区域日期格式(如)YYYYMMDD和客户端的 SQL服务器是有MM/DD/YYYY(或任何其他有效的日期格式),比 查询生成应包含适当的日期格式。

你让自己很难。
您构建的查询不必关心您的客户机或SQL Server的区域格式是如何设置的。
无论区域设置如何,sql server都会理解语言中性格式。

你可以在这里找到它们http://www.karaszi.com/SQLServer/info_datetime.asp#DtFormatsInput

所以,当你真的想建立自己的查询文本比使用
"YYYYMMDD"日期,和日期时间"YYYYMMDD hh:mm:ss" EX(“20170831 14时23分05秒”)。
现在你不必再关心格式了。

更好的方法是将参数用于查询。

+0

...它为我工作。非常感谢您的帮助。 –

+0

没问题,很高兴我能帮上忙 – GuidoG

在我看来,你应该做的是去了解那里是你的客户的服务器的标准格式,如果它是标准的,那让你的约会对象在不同的​​变量,即不是一个单一的文本/数字格式“年月日”。为每个使用不同的变量。并通过阅读格式将它们相互匹配。

如果以上是你的问题,那么试试这个。

select SUBSTRING(Date,0,CHARINDEX('/',Date,0)) as Splitted  

(在这个日期是在客户端的格式)

或者

Month=SUBSTRING(Date,0,2) 
Date=SUBSTRING(Date,3,2) 
Year=SUBSTRING(Date,6,4) 

然后显示在你想要的任何格式的日期。

+0

我们在不同的地理位置有不同的客户。它不是我们会得到的一个日期格式。 –

+0

使用相同的方法,您可以根据日期的位置和格式分隔查询。 –

+0

这就是我的主要问题:“如何使用delphi7代码获取SQL Server的区域日期格式?” –

尝试是这样的假设全区有相同的格式 选择*形式的数据,其中面积=“ABC”

然后搜索“:”或“/”

现在做的一个子文本被“:”或“/”分隔并得到a,b和c变量。

由于我假设相同的格式acroos区域,我们可以检查一个> 12和两位数然后它是一个日期,b是两个didgits和< 12月,如果c有四个数字,那么它是年。 你可能会认为如果我们01/01/2001那么什么?

因此,我假设所有来自具有统一格式的同一地点的输入。检查所有条件并通过检查是否满足所有条件得到确定的答案。

如果你处理实时类型的数据库,然后比较今天的日期。

该查询返回用于当前会话的日期格式(@@语言点,其语言设置)

Select DateFormat 
From sys.syslanguages 
Where name = @@Language 
+0

感谢您的试用。但是这会将日期转换为Server的区域设置,我想要的是它应该是SQL Server格式的格式。 –

+0

我已经更改了从SQL Server设置获取格式的答案。 –

尝试在查询的一些事情是这样的:

转换(VARCHAR,DOB, 103)为“出生日期”

+0

我想要的是在运行时获取SQL服务器的日期格式。这不会帮助我。 –