Skip to content

Commit 3be0444

Browse files
author
Geo W
committed
allow converting from DateTime2 to Datetimen in 'tds73'
1 parent 98943b2 commit 3be0444

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/tds/codec/column_data.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,20 @@ impl<'a> Encode<BytesMutWithTypeInfo<'a>> for ColumnData<'a> {
594594
time.encode(&mut *dst)?;
595595
}
596596
#[cfg(feature = "tds73")]
597+
(ColumnData::DateTime2(opt), Some(TypeInfo::VarLenSized(vlc)))
598+
if vlc.r#type() == VarLenType::Datetimen =>
599+
{
600+
if let Some(dt2) = opt {
601+
dst.put_u8(8);
602+
let days = dt2.date().days() - 693595; // minus days gap between year 1 and year 1900;
603+
let seconds_fragments = dt2.time().increments() * 100 * 300 / 1e9 as u64; // degrade second's precision
604+
dst.put_u32_le(days as u32);
605+
dst.put_u32_le(seconds_fragments as u32);
606+
} else {
607+
dst.put_u8(0);
608+
}
609+
}
610+
#[cfg(feature = "tds73")]
597611
(ColumnData::DateTime2(opt), Some(TypeInfo::VarLenSized(vlc)))
598612
if vlc.r#type() == VarLenType::Datetime2 =>
599613
{

0 commit comments

Comments
 (0)