недей. DateTime
стойностите трябва да се съхраняват като DateTime
, освен ако нямате наистина основателна причина да ги съхранявате по друг начин (като за поддържане на стойности за дата и час извън мин./максималните стойности на DateTime
), бих предложил да го оставите в DateTime
колона.
Винаги можете да манипулирате как ги връщате от базата данни по време на Select
или в слоя за презентация. За да върнете Unix времето от DateTime
, MySql предоставя вграден метод, наречен UNIX_TIMESTAMP
. За да върнете броя на милисекунди, просто умножете по 1000, тъй като клеймото за време на unix е броят на секундите от 1 януари 1970 г. (без да се включват високосните секунди). Ако искате да съхранявате unix време, ще трябва да използвате тип данни int.
Моля, имайте предвид, че ако съхранявате unix време, вместо да съхранявате действителното DateTime
стойност в DateTime
колона тип данни, ще загубите възможността да използвате лесно всички функции за дата и час, вградени в базата данни. Например, ако искате да разберете колко реда принадлежат на конкретен месец, първо ще трябва да преведете данните от int към datetime и едва след това ще можете да го изчислите.
Също така ще загубите точност (тъй като времето в unix е неточно дори при резолюция от 1 секунда, защото игнорира високосните секунди).
И така, в заключение – когато базата данни ви предлага тип данни, който отговаря на данните, не съхранявайте тези данни, като използвате различен тип данни. използвайте Date
тип данни, ако искате да съхранявате само дати, DateTime
тип данни, ако искате да съхранявате стойности за дата и време, и Time
тип данни, ако искате да съхраните определен час от деня.
P.S.
Когато работите със стойности за дата и час, особено ако трябва да работите с клиенти от множество местоположения, ВИНАГИ съхранявайте само времената за дата UTC във вашата база данни, освен ако, разбира се, не искате да полудете.