sql-server - 迄今为止的 VARCHAR

标签 sql-server

目前我有一个名为 date 的列,作为 varchar 而不是日期时间。当前格式为“sep12”。我怎样才能将其转换为日期类型? 我知道这是模板,但由于我当前的格式为 MMMYY,所以我不确定将数字更改为什么。

CAST (
    SUBSTRING(date, 3, 2) + '/' +
    SUBSTRING(date, 1, 2) + '/' +
    SUBSTRING(date, 5, 4) 
AS DATETIME) 

任何帮助将不胜感激

目前,按日期字段排序时,排序方式为 apr09、apr10。 aug09、aug10,但我需要按年份顺序排列

最佳答案

首先,以这种方式存储日期是一个糟糕的主意。但如果您知道年份始终以 20 开始,那么您可以使用类似的内容(请参阅 SQL Fiddle Demo ):

declare @dt varchar(10) = 'Sep12'

select convert(datetime, left(@dt, 3) + '01 20' + right(@dt, 2), 100)

如果从表中提取数据:

select convert(datetime, left(yourDateField, 3) + '01 20' + right(yourDateField, 2), 100)
from yourTable

关于sql-server - 迄今为止的 VARCHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562813/

相关文章:

sql-server - SQL Azure : list all logins and users

sql-server - 从 SQL Server 2008 Standard 升级到 Developer?

SQL Server Select 使用 IN() 查询并按相同顺序排序

sql-server - 阿拉伯语姓名查询返回多个结果

html - 如何在 ui 中显示呈现的 html 文本?

sql-server - 在 SQL Server 中有效存储各种大小的数值?

sql - 在多行中显示一列

sql-server - 如果值包含这些字母,那么

sql - 将 Oracle 触发器转换为 Sql Server 触发器

sql-server - 如何在我的搜索表列上创建临时非聚集索引并在选择操作后将其删除