我想獲得區域date
和time
格式爲SQL Server。我在使用Delphi7這裏。我的情況是如下:Delphi7:獲取SQL服務器系統日期和時間格式
如果我的服務器的區域日期格式(例如)yyyymmdd
和客戶端的SQL服務器爲mm/dd/yyyy
(或任何其他有效的日期格式),比生成應包含正確的日期格式的查詢。
注:我已經寫在Delphi7的其中設置默認格式 MSSQL,將讀取服務器的區域日期格式太代碼。並將服務器的區域日期格式轉換爲MSSQL日期格式。
我想獲得區域date
和time
格式爲SQL Server。我在使用Delphi7這裏。我的情況是如下:Delphi7:獲取SQL服務器系統日期和時間格式
如果我的服務器的區域日期格式(例如)yyyymmdd
和客戶端的SQL服務器爲mm/dd/yyyy
(或任何其他有效的日期格式),比生成應包含正確的日期格式的查詢。
注:我已經寫在Delphi7的其中設置默認格式 MSSQL,將讀取服務器的區域日期格式太代碼。並將服務器的區域日期格式轉換爲MSSQL日期格式。
如果我的服務器的區域日期格式(如)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秒」)。
現在你不必再關心格式了。
更好的方法是將參數用於查詢。
...它爲我工作。非常感謝您的幫助。 –
沒問題,很高興我能幫上忙 – 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)
然後顯示在你想要的任何格式的日期。
我們在不同的地理位置有不同的客戶。它不是我們會得到的一個日期格式。 –
使用相同的方法,您可以根據日期的位置和格式分隔查詢。 –
這就是我的主要問題:「如何使用delphi7代碼獲取SQL Server的區域日期格式?」 –
嘗試是這樣的假設全區有相同的格式 選擇*形式的數據,其中面積=「ABC」
然後搜索「:」或「/」
現在做的一個子文本被「:」或「/」分隔並得到a,b和c變量。
由於我假設相同的格式acroos區域,我們可以檢查一個> 12和兩位數然後它是一個日期,b是兩個didgits和< 12月,如果c有四個數字,那麼它是年。 你可能會認爲如果我們01/01/2001那麼什麼?
因此,我假設所有來自具有統一格式的同一地點的輸入。檢查所有條件並通過檢查是否滿足所有條件得到確定的答案。
如果你處理實時類型的數據庫,然後比較今天的日期。
該查詢返回用於當前會話的日期格式(@@語言點,其語言設置)
Select DateFormat
From sys.syslanguages
Where name = @@Language
感謝您的試用。但是這會將日期轉換爲Server的區域設置,我想要的是它應該是SQL Server格式的格式。 –
我已經更改了從SQL Server設置獲取格式的答案。 –
嘗試在查詢的一些事情是這樣的:
轉換(VARCHAR,DOB, 103)爲「出生日期」
我想要的是在運行時獲取SQL服務器的日期格式。這不會幫助我。 –
不,查詢應該包含可綁定參數而不是文本值。 – Victoria
我有用** delphi **編寫的代碼,它爲MSSQL設置了默認格式。它會將服務器的區域日期格式轉換爲MSSQL日期格式。 –
我仍然錯失了爲什麼要使用文本值進行操作的真正原因。爲什麼要構建帶有日期和時間值表示爲文本的SQL命令? – Victoria