SQL将日期传递到另一个表

时间:2018-07-12 01:10:05

标签: mysql sql

我有只具有varchar和int类型的表。我需要将其他表的日期(参数)传递到该表中。例如:当我通过'2018-01-30'时,它将显示在Jan列中。 有没有办法存档?

Data Data type

1 个答案:

答案 0 :(得分:1)

如果您要基于日期的月份显示不同的列,则可以通过结合elt()和month()函数来实现此目的来进行单个查询:

select elt(month('2018-01-30'),jan, feb, mar, ..., dec) as mon from yourtable

elt()根据第一个参数中提供的索引返回第N个参数。 month()函数返回日期中的月份号(例如1月=> 1)。

如果要基于日期显示不同的列数,则对于单个查询是不可能的,因为必须在查询中固定列数。在这种情况下,您需要编写使用动态sql生成查询的存储过程,或者编写使用外部编程语言来动态汇编和执行这种查询的代码。

更多说明:

  1. 存储在列中的数据似乎是数字,但仍将它们存储为字符串。 decimal数据类型似乎更合适。

  2. 请考虑更改数据结构,并使用一个month或year_month列加上一个price列,而不是几个月的列。总计和平均值可以随时计算。