資料庫中的時間格式轉換

請問一下,字串(String)格式的時間,能否轉成Time Stamp
亦或是資料庫中的時間格式抓出來,可否轉換?
因為想要把抓出來的時間,送給XY Graph…

[QUOTE=DennisKao]請問一下,字串(String)格式的時間,能否轉成Time Stamp
亦或是資料庫中的時間格式抓出來,可否轉換?
因為想要把抓出來的時間,送給XY Graph...[/QUOTE]

http://www.labview.com.tw/forum/forum_posts.asp?TID=3037&KW=xy+graph

[QUOTE=ancle]http://www.labview.com.tw/forum/forum_posts.asp?TID=3037&KW=xy+graph[/QUOTE]

原問者的意思是說,如何將String的格式換成時間的格式:

![](upload://5fluxlH8mDJ5ZzN41kxHYT5KSkK.jpeg)

[QUOTE=Benjamin]

原問者的意思是說,如何將String的格式換成時間的格式:

![](upload://5fluxlH8mDJ5ZzN41kxHYT5KSkK.jpeg)

[/QUOTE]

![](upload://pGTqEVwws967ROWmg23DUQCzPpM.jpeg)

是這樣嗎?給大家參考囉~~~

(本來想傳檔案的啦,但是基於教學相互成長的目的只好傳圖片給各位DIY囉!)

感謝Tomado的方式,我會嘗試看看


原先,我將時間轉字串寫入資料庫,在資料庫成為時間格式
今天,我將欲寫入資料庫的時間改成了:TimeStamp→DBL→String(用以避免32bit不夠存的問題,站上的某篇文章有提到,不過現在一時找不到~)
所以,存在資料庫的是字串(VBScript有字串轉數字的函數)

不過,若是要利用網頁(如:ASP)將時間顯示出來的話,就必須在網頁上撰寫一些程式碼
只要知道Timestamp的定義即可
(7.1的Help中提到:1904/1/1 12:00 a.m為0,但經我實驗,是1904/1/1 08:00 a.m才對)
(VBScript 1899/12/30 00:00:00 為0)

[QUOTE=DennisKao]

(7.1的Help中提到:1904/1/1 12:00 a.m為0,但經我實驗,是1904/1/1 08:00 a.m才對)
(VBScript 1899/12/30 00:00:00 為0)

[/QUOTE]

這裡指的是格林威治時間喔! 在台灣時區是+8小時的~~

通常我們要以數字的形式將時間存檔,就必須將Time Stamp to DBL

可是由於SUB VI---(Write To Spreadsheet File.vi)內部的Data type為SGL

以致於Time Stamp to DBL在存檔時產生不夠存的現象,因此,只要將SUB VI內的Data type改為DBL

如此一來,時間就可以正常存檔了。

以下為簡易修改流程與程式範例,若有疏漏,不另指正。                 另附桌布一張Wallpaper.rar

01.

![](upload://xv4saixBCLrd4T0fJ7DlZiTlYs7.jpeg)

02.

![](upload://f3cwhfiPrxQS3BJBECQ6v6SWNAq.jpeg)

03.

![](upload://xqY7u6oAbKu2o6ijDjRynrRDRSL.jpeg)

04.

![](upload://2sMTCWxgYLCJ0VdB4OiwUXgqJF6.jpeg)

05.

![](upload://uLLHwmX2UExeFeXSzSdJ8bTDx0k.jpeg)

請問SUB VI---(Write To Spreadsheet File.vi)寫入文字檔,
所造成之Time Stamp to DBL在存檔時產生不夠存的現象為何?

因為我另外有儲存一些資料,其中也是利用(Write To Spreadsheet File.vi),
並且時間也是利用Timestamp轉DBL直接存入,似乎沒什麼問題?還是中間有產生誤差而我不自知?

而站上的這篇文章提出不夠存的問題,則是在寫入MySQL資料庫時所產生的~

DennisKao38710.0393171296

[QUOTE=Tomado]

![](upload://pGTqEVwws967ROWmg23DUQCzPpM.jpeg)

是這樣嗎?給大家參考囉~~~

(本來想傳檔案的啦,但是基於教學相互成長的目的只好傳圖片給各位DIY囉!)

[/QUOTE]

請問一下,圖中的是Unbndle By Name嗎?

為什麼上面的Cluster常數(九個0 ?)一接上之後,Decimal String To Number與Unbndle By Name中間就成了斷線?

而且Unbndle By Name上面六個element 的name是怎麼設定的?

--

感謝您的回答,弄了一整天,好像還是沒什麼頭緒...

--

終於有答案了,感謝...(利用Second To Date/Time得知DateTime rec的Lable)

![](upload://pbs2DgRbqVcuo8JnSx7LFHDnAcf.jpeg)

DennisKao38712.0356712963

請參考以下連接

Convert Time/Date String to Time Stamp

ni提供之convert string to time stamp.vi會有上午及下午12:00 ~ 13:00轉換錯誤之情形

而且其字串格式與我現在使用之資料庫預設時間格式不同

故我已將其修正如下圖:

![](upload://13qHUiSPjYkb1W33OJoIWlxxeO0.jpeg)

目前自行測試沒什麼問題

提供給大家參考囉!

參考:
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019MQ8SAM
ether43356.5448032407

[QUOTE=ether]

參考:
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019MQ8SAM
[/QUOTE]

大推,很漂亮的寫法:

Use the Scan from String VI:
  1. Place a Scan from String VI on the block diagram.
  2. Right-click the Scan from String VI and select Edit Scan String from the dropdown menu.
  3. Select Scan time stamp from the Selected operation menu.
  4. Customize the string format using the Corresponding scan string textbox. You can use the Time Stamp Format Codes to correct format the string. Note: If you leave the format string as %T, LabVIEW will guess based on commonly used formats. An example of using this method is shown below:
Use the NumText.Text property of a Time Stamp control or indicator:
  1. Create a Time Stamp control or indicator.
  2. Create a Property Node for the control or indicator and select the NumText.Text property.
  3. Right-click the Property Node and select Change All to Write.
  4. Right-click the Time Stamp control or indicator and select Properties.
  5. Navigate to the Display Format tab to customize the string format interactively as shown below.

 
Here is an example of using this method: