首页 > 解决方案 > 根据数据类型格式化日期列的 SQL 语句

问题描述

我有一个 javascript 函数,可以将 select 语句发送到 sql 服务器。列和表名由用户给出。如果数据类型是日期,我希望它以特定格式返回。

因为用户定义了列,所以不知道会不会是日期类型,所以我的想法是检查每一列的数据类型,如果是日期,使用格式函数将其转换为所需的结果。

像这样:(我知道我在这里发明了自己的 SQL)

DECLARE @type
SELECT firstName, lastName, hireDate, termDate       // columns supplied by the user


  // Cycle through each column, check the data type and reformat it if it is some type of date
  FOR EACH(@column)
    SET @type =  SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'employees' AND COLUMN_NAME = @column
    IF (@type = 'date')
      FORMAT(@column, 'YYYYMMDD')
    ELSE IF (@type == 'datetimeoffset' OR 
             @type == 'smalldatetime' OR
             @type == 'datetime2')
      FORMAT(@type , 'YYYYMMDDHHMMSS')
    END IF
  END FOR EACH

FROM employees      // table supplied by the user

这样的事情可行吗?

标签: sqldateforeachformat

解决方案


推荐阅读