2017-07-28 57 views
-1

我在我calendar_table中的日期列属性存储我的日期,我想添加另一列date_name,然后像下面那样自动填充它们。如何进行自动创建另一列并转换日期格式的查询?

日期:2017年7月28日至date_name7月28日,星期五

目前使用heidiSQL(MySQL的)

我想下面的查询,但它说,有语法错误

SELECT [date], 
DATENAME(day, [date]) + ' ' + DATENAME(month, [date]) + ', ' + DATENAME(DW, [date]) 
FROM [dbo].[DatesTable](-- current month calendar table 
DATEADD(dd,1,EOMONTH (GETDATE(), -1)), 
EOMONTH (GETDATE()) 
) 


Select cd.date 
from calendar_table as cd 
INSERT into cd.date_name values (
CAST(DATEPART(DAY,DateTime) AS VARCHAR(2)) + ' ' + CAST(DATENAME(MONTH,DateTime) AS VARCHAR(12)) + ','+ CAST(DATENAME(DAY,DateTime) AS VARCHAR(8))) 
+0

您似乎正在使用SQL Server语法。 –

+0

以上是MS SQL Server语法。请参阅您的DBMS手册。 – ADyson

+0

你可以很容易地谷歌谷歌每个功能,你正在使用的等值。你不需要我们为你查找它。 – ADyson

回答

0

如果您想将日期从默认格式yyyy-mm-dd(例如:2017-07-28)转换为任何其他文本格式如28 July, Friday您必须使用DATE_FORMAT(date,format)函数。

SELECT @dt:=CAST('2017-07-28' AS DATE) AS dt 
    , DATE_FORMAT(@dt, '%d %M, %W') AS formatted_date_string 

输出将采用以下格式:

+------------+-----------------------+ 
| dt   | formatted_date_string | 
+------------+-----------------------+ 
| 2017-07-28 | 28 July, Friday  | 
+------------+-----------------------+ 

您可以在事务中使用相同或类似的格式。
但我的建议是不将格式化的日期字符串存储到数据库中,而只是日期和时间以其默认格式存储。您可以在这些字段上应用格式以查看和打印。

+0

我如何将我的整个日期列表填充到formatted_date_string的列中,因为我有一个大的日期列表。 –

+0

在给出的例子中使用'dt'的表格日期列 –

+0

您的查询应该像'select date_col,date_format(date_col,......)as formatted_d .... from table_name' –