关于MySQL中日期的迭代INSERT

时间:2013-06-24 07:32:28

标签: php mysql sql zend-framework

由于我在数据库中进行了一些迭代插入,我遇到了一些性能问题。

这是一个预订网站,每个客户可以通过时间跨度为每年的每一天设定单位价格。

目前,我在PHP中从start_date循环到end_date并相应地设置价格,但是很长一段时间它需要很长时间才能完成。

由于每个时期的价格是相同的,我想知道MySQL是否有办法在不通过带有多个插入的繁重PHP循环的情况下做到这一点,而是用一个查询代替。

CREATE table disponibility (
    dispo_id INT PRIMARY KEY,
    dispo_full_date varchar(10),
    dispo_day varchar(2),
    dispo_month varchar(2),
    dispo_year varchar(4),
    dispo_price INT
)

所以用户从date_from和date_to设置价格,我需要以下格式的数据:

dispo_full_date =>日期格式为dd / mm / yyyy dispo_day =>日期格式为dd的日期 dispo_month =>格式为mm的日期, dispo_year =>从yyyy格式开始的那一年, dispo_price =>价格,只是一个INT

有没有办法只用SQL做到这一点?特别是因为一个月的天数每个月都不同,甚至取决于2月份的年份......

1 个答案:

答案 0 :(得分:0)

将您的表格更改为DATETIME dispo_start_dateDATETIME dispo_end_date,然后使用SELECT BETWEEN

不要每天都存储并使用DATETIME)字段(带索引)。

这应该更快。