我有一个mysql表,它有一列date
类型的列。
我将在此列中存储非格里历日期(即Jalali日期)。
我通过使用phpMyadmin
并存储了Jalali日期并且没有发生错误,测试了这一点。
在date
类型中存储非格里历日期是一个好主意吗?
如果不是;哪个更好?将其存储为varchar
或timestamp
或时间戳为Int
或其他?在MySQL的日期类型中存储非格里历日期
2
A
回答
4
在日期类型中存储非格里历日期是一个好主意吗?
号除此之外,在一个日历系统中的一些有效的日期没有在另一个日历存在,对DATE
类型列工作功能可能无法正常工作。这个问题不仅仅是存储数据,你需要处理这些数据,例如将它们与CURDATE()
进行比较。
将它作为varchar或作为时间戳或时间戳存储为Int或其他东西?
如果你选择一个正确的格式,用两位数字月份和日期和数字为年静态数字,字符串类型,CHAR
或VARCHAR
是好的。比较主题和对方只是一个词汇比较,你仍然可以编写你的函数或程序来扩展功能。
选择TIMESTAMP
或DATE
更改问题为前者代表特定时间,但后者代表日历中的特定条目。如果你想把时间放在日期旁边,他们的意义仍然不同。您应该考虑一些问题,例如导致某些人愿意放入日历条目(DATE)的日光节约时间更改以及某些更喜欢1970年1月1日(TIMESTAMP)之后的秒数。例如根据伊朗目前的政府法律,Hijri Shamsi日历中有1393-06-30 23:30:00
两个时间戳。
0
您可以将非格利高日期存储在数据库的integer
字段中。
例子:
year:1396, month:11, day:17
=>13961117
year:1393, month:4, day:9
=>13930409
利用这一点,您可以查询行发现是<=>
不是一个具体的日期和日期一个具体的日期,但不幸的是,你无法将它们相互比较。
0
几乎所有数据库系统的内部存储和二进制接口都与日历无关。您只需将日期(可能时间)存储到数据库中,不提供日历信息。这只是从特定时间点(通常是1970-01-01午夜)开始的简单天数,秒或毫秒数。
因此,您只需在应用程序层中提供日期的API抽象。其他一切都会奏效。您可以将所有日期转换为格里历或Unix时间戳,并像往常一样向MySQL发送查询。
相关问题
- 1. 如何将java日期类型存储为mysql日期类型?
- 2. 日期对象是否使用非格里历日历?
- 3. MySql中的日期类型
- 4. 在mySQL中存储日期的数据类型
- 5. 以mysql日期格式存储时区
- 6. 的Android源码存储日期类型
- 7. 如何组织MySQL日历日期的存储性能
- 8. Freemarker中格式化日期类型日期类型为Unknown
- 9. 在MySQL日期字段中存储未完成日期
- 10. 通过Codeigniter在MySQL中存储日期。存储为0000:00:00的日期
- 11. 如何存储日期日期数据类型18/12/2016
- 12. Android日历“日期网格”
- 13. C#日历日期格式
- 14. 格式化日历日期
- 15. 在Ajax日历中格式化日期
- 16. 以回历日期格式显示日期的日历
- 17. Java 8日期API与日历/日期/日期格式
- 18. 获得升压::格里历日期::
- 19. 当在sql server(日期时间类型)中存储日期时间时,它以什么格式存储它?
- 20. 存放在MySQL日期:为日期
- 21. 如何在表格中存储日期
- 22. 在elasticsearch中存储日期格式
- 23. Mysql datediff日期类型
- 24. Mysql 2日期类型
- 25. 在MongoDB中存储日期
- 26. D3:格式日期类型
- 27. 转换日期或日历类型为字符串格式
- 28. 转换为非日期格式日期用mysql PHP
- 29. Java中的日期/日历
- 30. 如何将波斯语日期转换为xcode中的格里历日期?
谢谢;我终于设法首先转换,然后将其存储为公历日期,因为我认为这种方法给了我mysql日期计算和日期本身的正确性 – RYN 2014-11-03 23:11:09
@ 4r1y4n,这会稍后提出问题,例如如何逐组。 – azerafati 2016-03-17 12:52:11