Skip to content

Instantly share code, notes, and snippets.

@ricardograca
Created March 4, 2018 19:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ricardograca/bc26ee92baeeee3f792a5d90050608cc to your computer and use it in GitHub Desktop.
Save ricardograca/bc26ee92baeeee3f792a5d90050608cc to your computer and use it in GitHub Desktop.
MySQL rounding dates with Knex
var assert = require('assert')
var knex = require('knex')
var mysql = knex({
client: 'mysql',
connection: {
database: 'bookshelf_test',
user: 'root',
encoding: 'utf8'
}
})
var sqlite = knex({
client: 'sqlite3',
connection: {filename: ':memory:'},
useNullAsDefault: true
})
var db = mysql // Change this to test another client
before(function() {
return db.schema.dropTableIfExists('cars').then(function() {
return db.schema.createTable('cars', function(table) {
table.increments()
table.string('name', 10)
table.timestamps()
})
})
})
after(function() {
return db.schema.dropTableIfExists('cars').finally(function() {
return db.destroy()
})
})
describe('hasTimestamps', function() {
it('maintains a consistent date value between saving and fetching rows', function() {
var createdAt = new Date()
var updatedAt = createdAt
return db('cars').insert({name: 'car', created_at: createdAt}).then(function() {
return db('cars').where({id: 1})
}).then(function(car) {
if (db.client.dialect === 'sqlite3') car[0].created_at = new Date(car[0].created_at)
assert.equal(car[0].created_at.toJSON(), createdAt.toJSON())
})
})
})
{
"name": "knex_timestamps",
"version": "0.0.1",
"description": "Test timestamps",
"main": "index.js",
"scripts": {
"test": "mocha index.js"
},
"dependencies": {
"knex": "0.14.4",
"mysql": "*",
"mocha": "*",
"sqlite3": "*"
},
"author": "Ricardo Graça <ricardo@devius.net>",
"license": "ISC"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment