【发布时间】:2020-03-30 22:12:08
【问题描述】:
我正在处理t-SQL 中的数据,为了使SSIS 中的包自动化处理每个给定日期的每个文件,我需要找出regex 或文件的转换,例如'leads_2019-Dec-22',以便打包完成。
到目前为止,这就是我所知道的,但这仅适用于'YYYY-MM-DD' 格式。我无法通过我拥有的数据加载器工具更改格式,因此没有简单的解决方法。
@[User::UploadedFile] =
REPLACE(REPLACE(REPLACE(REPLACE(@[User::UploadedFileName], "yyyy",
(DT_STR,4,1252)DATEPART( "yyyy" , getdate())),"mm",RIGHT("0"+
(DT_STR,4,1252)DATEPART("mm",getdate()),2)), "dd", RIGHT("0"+
(DT_STR,4,1252)DATEPART("dd",getdate()),2)), "hh", right("0" +
(DT_STR,4,1252)DATEPART("Hh",getdate()),2) )
之前有没有人处理过这个问题,如果有,您是如何/将如何使用表达式解决这个问题的?
【问题讨论】:
-
日期是否总是相同的格式?
-
据我所知,ms sql 中没有
regexes。不过,您可以搜索 SO 寻找解决方案。 -
如果要将日期转换为 yyyy-mm-dd,则只需使用正确的转换代码将日期转换为 varchar。只需查找 sql 日期转换代码以找到正确的代码,并在需要时截断或替换空格等字符。
-
你能解释一下
(DT_STR,4,1252)的意义吗? -
yyyy-mm-dd 是 ISO8601。
CONVERT( VARCHAR(10), GETDATE(), 23 )应该可以解决问题。见docs.microsoft.com/en-us/sql/t-sql/functions/…
标签: sql sql-server regex tsql ssis