簡體   English   中英

將毫秒傳遞到存儲過程mySQL中

[英]Passing milliseconds into stored procedure mySQL

我的存儲過程發生了奇怪的事情。 我正在將一個int傳遞給存儲的proc-當我將其作為值傳遞給某個時間時,存儲過程將以與int相同的值傳遞該值(以毫秒為單位),因此它不起作用

將1360292312(int)傳遞到FROM_UNIXTIME(fromDate)可以正常工作(給出正確的翻譯)

傳遞1360292312000(int)到FROM_UNIXTIME(fromDate / 1000)不起作用(沒有給我我期望的)

為什么會這樣-我需要將類型更改為bigINT嗎?

這是帶signed int最大值的問題。 將數字發送到FROM_UNIXTIME()之前,必須將其除以1000。 更重要的是,它應該小於或等於有符號int的最大值。

signed int最多只能達到2147483647,從我所見的FROM_UNIXTIME可以看到,或者達到該值的任何值。 如果傳遞2147483647 + 1,則返回null。

查詢和結果-

SELECT FROM_UNIXTIME(1360292312), #February, 08 2013 02:58:32+0000
        FROM_UNIXTIME(1360292312000),  #(null)
        FROM_UNIXTIME(1360292312000/1000), #February, 08 2013 02:58:32+0000
        FROM_UNIXTIME(2147483647), #January, 19 2038 03:14:07+0000
        FROM_UNIXTIME(2147483648), #(null)
        FROM_UNIXTIME(4294967295) #(null)

看小提琴的例子

整數型手冊

FROM_UNIXTIME 手冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM