我有一个struct PixelData {
var a: UInt8 = 0
var r: UInt8 = 0
var g: UInt8 = 0
var b: UInt8 = 0
}
func imageFromBitmap(pixels: [PixelData], width: Int, height: Int) -> UIImage? {
assert(width > 0)
assert(height > 0)
let pixelDataSize = MemoryLayout<PixelData>.size
assert(pixelDataSize == 4)
assert(pixels.count == Int(width * height))
let data: Data = pixels.withUnsafeBufferPointer {
return Data(buffer: $0)
}
let cfdata = NSData(data: data) as CFData
let provider: CGDataProvider! = CGDataProvider(data: cfdata)
if provider == nil {
print("CGDataProvider is not supposed to be nil")
return nil
}
let cgimage: CGImage! = CGImage(
width: width,
height: height,
bitsPerComponent: 8,
bitsPerPixel: 32,
bytesPerRow: width * pixelDataSize,
space: CGColorSpaceCreateDeviceRGB(),
bitmapInfo: CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedFirst.rawValue),
provider: provider,
decode: nil,
shouldInterpolate: true,
intent: .defaultIntent
)
if cgimage == nil {
print("CGImage is not supposed to be nil")
return nil
}
return UIImage(cgImage: cgimage)
}
列,其日期格式为
varchar
例如,DDMMYYYY HH:MM:SS
我需要将其插入另一个表的30072016 23:59:59
列中。
我尝试了各种DATETIME
选项,但似乎都出现了这个错误
导致将varchar数据类型转换为日期时间数据类型 在超出范围的值
请帮助。
答案 0 :(得分:2)
SQL Server 2012+中的一种方法是分别进行日期和时间转换:
select (datefromparts(substring(col, 5, 4) + 0, substring(col, 3, 2) + 0, left(col, 2)) +
convert(time, right(col, 8))
) as dt_value
实际上,这可以在早期版本中使用,您只需要使用不同的功能,因为不支持datefromparts()
。
答案 1 :(得分:1)
以下是将CONVERT
函数与样式 105
DECLARE @datetime varchar(50)='30072016 23:59:59'
SELECT CONVERT(datetime,stuff(stuff(@datetime,3,0,'-'),6,0,'-'),105)
由于您当前的日期时间格式与SQL SERVER
中的任何本机日期时间格式都不匹配,因此我们需要转换为sql server可以读取的格式。
SQL SERVER
可以阅读此格式DD-MM-YYYY HH:MM:SS
。在-
,day
和month
之间插入year
使用STUFF
功能。插入后我们可以将其转换为datetime
答案 2 :(得分:0)
这与SQL Server本身可解析的任何格式都不匹配。
因此,我的建议是:
使用字符串操作(LEFT
和SUBSTRING
)将其转换为 可由SQL Server本机解析的格式,例如{{1} (样式120,“ODBC规范”),
然后使用YYYY-MM-DD HH:MM:SS
将其转换为日期时间。