[英]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.