【发布时间】:2019-06-26 07:10:02
【问题描述】:
我想将一个格式为“/”的日期列传输到“-”,例如,一个日期数据,如“10/19/2018 2:49:47 PM”,但我想要格式“2018-10” -19 14:49:47'。我尝试了以下操作,例如使用转换,但它似乎不起作用。
SELECT [LMDM_Data] ,convert(varchar(100),LMDM_Data,23) ,CAST(LMDM_Data as varchar(10)) FROM Table
结果如下:
LMDM_Data (No column name) (No column name)
10/19/2018 2:49:47 PM 10/19/2018 2:49:47 PM 10/19/2018
为了验证该列是否为Date,我使用isDate()函数检查,都返回1。
SELECT [LMDM_Data] ,ISDATE(LMDM_Data), convert(varchar(100),LMDM_Data,120) ,CAST(LMDM_Data as varchar(10)) FROM [ESS_NJ_LMDM_PDM].[dbo].[maintanence_workload]
结果如下:
LMDM_Data (No column name) (No column name) (No column name)
10/19/2018 2:49:47 PM 1 10/19/2018 2:49:47 PM 10/19/2018
【问题讨论】:
-
Date has no display format. 只有日期的字符串表示具有显示格式。
-
正如 GSerg 所写 - 如果您将日期存储为字符串,请停止这样做。阅读 Aaron Bertrand 的 Bad habits to kick : choosing the wrong data type 了解详情。
-
isDate()如果得到的字符串可以转换为日期/日期时间,则返回 1,否则返回 0。该列的实际数据类型是什么? -
@ZoharPeled Bingo,是varchar类型,可以转Date。
-
那么你真的需要修复你的数据类型@Zoeric,然后让你的表示层担心格式。
10/19/2018 2:49:47 PM不是“之后”06/26/2019 8:30:32 AM也不是“之前”10/19/2018 9:21:01 AM;但这是根据你的数据。
标签: sql-server