如何將數字“字符串”轉換為日期?我是新用戶,我正在嘗試將數字字符串轉換為 jmp 日期格式。
我嘗試通過連接字符串來創建一個新列,這樣至少可以獲得我想要的“ddmmyyy”輸出:
(Substr( :START_DATE, 7, 2 ) || Substr( :START_DATE, 5, 2 )) ||Substr( :START_DATE, 1, 4 ) 但這並沒有讓我更進一步。
對此有什麼想法嗎?

回复:如何將數字字符串轉換為日期?不抱歉,現在可以了
謝謝您的幫助
回复:如何將數字字符串轉換為日期?實際上,當我在測試文件上運行它時,我在所有行中都丟失了數據。 我使用 JMP 12 - 這是原因嗎?回复:如何將數字字符串轉換為日期?謝謝 - 這有幫助回复:如何將數字字符串轉換為日期?使用 Jim 的腳本和列公式的方式之間存在一些差異。
- 列公式根據舊數據創建新列。 如果添加新行,公式會自動運行以轉換日期值。 除非先刪除公式,否則無法刪除舊數據列。
- 該腳本從腳本編輯器運行一次。 Jim 的腳本會就地轉換列,將數字從原始表示形式更改為 JMP 日期時間表示形式。 如果在運行腳本後添加更多數據,則應使用列所需的 JMP 日期時間格式添加數據。
我認為您可能想要回答的問題是“我如何獲得 JMP 不喜歡的這些日期,以及更好的方法是什麼?”
當您將此數據(可能是從 CSV 文件)導入到 JMP 中時,或者當您將其輸入到新表格中時,JMP 會看到一個數字並創建一個數字列。 讓 JMP 看到日期為 20180315,而不是20,180,315 您需要告訴 JMP 將數據解釋為 yyyymmdd 格式。 您可以使用數據表中的列屬性來執行此操作,並指定信息和格式。
informat yyyymmdd format monddyyyyinformat yyyymmdd format monddyyyy信息 yyyymmdd 格式 monddyyyy
Input Format available after choosing FormatInput Format available after choosing Format選擇格式後可用的輸入格式
如果您使用文本文件導入從 CSV 文件獲取數據,您還可以使用預覽嚮導第二頁上列上方的紅色三角形指定列的格式。
Text import preview wizard second pageText import preview wizard second page文本導入預覽嚮導第二頁
最後,JMP 的日期時間值表示為自 1904 年 1 月 1 日以來的秒數。 https://www.jmp.com/support/help/14/date-time-functions.shtml有很多更多的信息。如果您看到一個毫無意義的巨大數字,它可能需要一種格式。 您可以更改輸出格式,顯示 03 或 Mar,因為內部表示保持不變。
回复:如何將數字字符串轉換為日期?1.根據您提供的示例數據表,我發布的腳本工作正常。 查看附件
2. 12是格式顯示的寬度。看:
幫助==>腳本索引==>數據表==>列腳本
描述和示例
回复:如何將數字字符串轉換為日期?這個帖子是關於 (\d\d) 部分的。 括號創建組,\d 匹配單個數字。
這個帖子是關於\1-\2-\3。這些是插入到結果字符串中的反向引用和額外文本(連字符)。 這些數字指的是匹配的左括號。
正則表達式是一個強大的工具,網上有很多教程。
這個例子對於當前的問題來說有點過分了; JMP 的日期信息在您將數字轉換為字符後就已經與您的數字格式相匹配。
回复:如何將數字字符串轉換為日期?感謝分享。 我更好地理解這一點,但它只適用於第一排的我。 之後它只返回“缺失值”。
另外“12”在做什麼
dt :開始日期< <格式( “ddmmyyy” , 12 ) ;
?
回复:如何將數字字符串轉換為日期?謝謝 - 這有效。 但我並不完全確定我完全理解它。
是個“(\d\d\d\d)(\d\d)(\d\d)”說明輸入格式?
“\1-\2-\3”在做什麼?
感謝您的幫助
回复:如何將數字字符串轉換為日期?吉姆 - 我一開始就錯了。 yyyymmdd 格式無需正則表達式或 substr 即可工作:
Informat( Char( :START_DATE ), "yyyymmdd" )
回复:如何將數字字符串轉換為日期?這是一個簡單的腳本,可以完成與 Craige 相同的操作
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:start_date = Date MDY(
Num( Substr( Char( :start_date ), 5, 2 ) ),
Num( Right( Char( :start_date ), 2 ) ),
Num( Left( Char( :start_date ), 4 ) )
)
);
dt:start_date << format("ddmmyyyy",12);回复:如何將數字字符串轉換為日期?你們真的很親近;您需要 char(start_date) 從數字中獲取字符串。 我嘗試了一種稍微不同的列公式方法
Informat( Regex( Char( :START_DATE ), "(\d\d\d\d)(\d\d)(\d\d)", "\1-\2-\3" ), "ymd" )
並設置列的格式
Output format different from input formatOutput format different from input format輸出格式與輸入格式不同
JMP 首選的日期內部表示形式是 JMP 日期時間值,它是一個可以採用多種不同格式進行格式化的數值。